Pesan Dengan menurun dalam ekspresi Lambda?


250

Saya tahu dalam tata bahasa Linq normal, orderby xxx descendingsangat mudah, tetapi bagaimana saya melakukan ini dalam ekspresi Lambda?

Jawaban:


428

Seperti yang dikatakan Brannon, ini OrderByDescendingdan ThenByDescending:

var query = from person in people
            orderby person.Name descending, person.Age descending
            select person.Name;

setara dengan:

var query = people.OrderByDescending(person => person.Name)
                  .ThenByDescending(person => person.Age)
                  .Select(person => person.Name);

7
"order by person.Name descending" harus " orderby person.Name descending"
mxmissile

63

Gunakan System.Linq.Enumerable.OrderByDescending()?

Sebagai contoh:

var items = someEnumerable.OrderByDescending();

21

Coba ini:

List<int> list = new List<int>();
list.Add(1);
list.Add(5);
list.Add(4);
list.Add(3);
list.Add(2);

foreach (var item in list.OrderByDescending(x => x))
{
    Console.WriteLine(item);                
}

14

Coba ini dengan cara lain:

var qry = Employees
          .OrderByDescending (s => s.EmpFName)
          .ThenBy (s => s.Address)
          .Select (s => s.EmpCode);

Pertanyaan. Lalu


3

Ini hanya berfungsi dalam situasi di mana Anda memiliki bidang angka, tetapi Anda dapat meletakkan tanda minus di depan nama bidang seperti:

reportingNameGroups = reportingNameGroups.OrderBy(x=> - x.GroupNodeId);

Namun ini bekerja sedikit berbeda dari OrderByDescendingketika Anda menjalankannya di int?atau double?atau decimal?bidang.

Apa yang akan terjadi adalah pada OrderByDescendingnol akan ada di akhir, vs dengan metode ini nol akan ada di awal. Yang berguna jika Anda ingin mengacak nol tanpa membelah data menjadi beberapa bagian dan menyambungnya nanti.


1

LastOrDefault()biasanya tidak bekerja tetapi dengan Tolist()itu akan berhasil. Tidak perlu menggunakan OrderByDescendinggunakan Tolist()seperti ini.

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.