OrderBy giảm dần trong biểu thức Lambda?


250

Tôi biết trong ngữ pháp Linq bình thường, orderby xxx descendingrất dễ, nhưng làm thế nào để tôi làm điều này trong biểu thức Lambda?

Câu trả lời:


428

Như Brannon nói, đó là OrderByDescendingThenByDescending:

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

tương đương với:

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

7
"order by person.Name giảm dần" nên là " orderby person.Name giảm dần"
mxmissile

63

Sử dụng System.Linq.Enumerable.OrderByDescending()?

Ví dụ:

var items = someEnumerable.OrderByDescending();

21

Thử cái này:

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);                
}


3

Điều này chỉ hoạt động trong các trường hợp bạn có trường số, nhưng bạn có thể đặt dấu trừ trước tên trường như vậy:

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

Tuy nhiên, điều này hoạt động hơi khác một chút so với OrderByDescendingkhi bạn đang chạy nó trên một int?hoặc double?hoặc decimal?các trường.

Điều gì sẽ xảy ra là trên OrderByDescendingnull sẽ ở cuối, so với phương thức này thì null sẽ ở đầu. Điều này rất hữu ích nếu bạn muốn xáo trộn null xung quanh mà không chia dữ liệu thành từng mảnh và ghép nó sau.


1

LastOrDefault()thường không hoạt động nhưng với Tolist()nó sẽ hoạt động. Không có nhu cầu sử OrderByDescendingdụng sử dụng Tolist()như thế này.

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.