Bagaimana cara mengurutkan DESC daftar generik dan ASC? Dengan LINQ dan tanpa LINQ? Saya menggunakan VS2008.
class Program
{
static void Main(string[] args)
{
List<int> li = new List<int>();
li.Add(456);
li.Add(123);
li.Add(12345667);
li.Add(0);
li.Add(1);
li.Sort();
foreach (int item in li)
{
Console.WriteLine(item.ToString() + "\n");
}
Console.ReadKey();
}
}
li.Sort((a, b) => b.CompareTo(a));
daripada-1*
pendekatan yang digunakan di sini. Saya mengedit jawabannya sesuai tetapi @Servy mengembalikannya.-a.CompareTo(b)
.Tanpa Linq:
Menaik:
Menurun:
sumber
Sort()
adalah metode kosong, jadi Anda tidak dapat menghubungkannyaReverse()
dengan cara ini. Anda akan membutuhkan 2 operasi terpisah. Namun, dengan LINQ Anda dapat menghubungkannya ke sebuahOrderBy
tetapi pada saat itu Anda sebaiknya menggunakanOrderByDescending
saja.tanpa LINQ, gunakan
Sort()
dan kemudianReverse()
.sumber
Saya sedang memeriksa semua jawaban di atas dan ingin menambahkan satu informasi tambahan lagi. Saya ingin mengurutkan daftar dalam urutan DESC dan saya sedang mencari solusi yang lebih cepat untuk input yang lebih besar dan saya menggunakan metode ini sebelumnya: -
tetapi kasus pengujian saya gagal karena melebihi batas waktu, jadi solusi di bawah ini berhasil untuk saya: -
Jadi kesimpulannya adalah cara ke-2 dari Sorting list dengan Descending order sedikit lebih cepat dari yang sebelumnya.
sumber
Cara yang sangat sederhana untuk mengurutkan Daftar dengan nilai int dalam urutan menurun:
Semoga ini membantu!
sumber
int.CompareTo(int)
alasan mengapa pintu. Lihat sumber di referenceource.microsoft.com yang mengatakan: " Perlu menggunakan bandingkan karena pengurangan akan membungkus menjadi positif untuk bilangan negatif yang sangat besar, dll .". Jika Anda memilikib = int.MinValue
dana = 1
(katakanlah), ini akan gagal. Terkadang panggilan metode sangat berharga.