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?

diam
sumber

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);
Jon Skeet
sumber
7
"order by person.Name descending" harus " orderby person.Name descending"
mxmissile
63

Gunakan System.Linq.Enumerable.OrderByDescending()?

Sebagai contoh:

var items = someEnumerable.OrderByDescending();
Brannon
sumber
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);                
}
Paul Zahra
sumber
14

Coba ini dengan cara lain:

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

Pertanyaan. Lalu

Sujit
sumber
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.

Alexander Ryan Baggett
sumber
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();
Kawindu
sumber