ChatGPT解决这个技术问题 Extra ChatGPT

OrderBy 在 Lambda 表达式中降序?

我知道在正常的 Linq 语法中,orderby xxx descending 很容易,但我如何在 Lambda 表达式中做到这一点?


J
Jon Skeet

正如 Brannon 所说,它是 OrderByDescendingThenByDescending

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

相当于:

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

“按人排序。姓名降序”应为“按人排序。姓名降序”
U
Uwe Keim

使用System.Linq.Enumerable.OrderByDescending()

例如:

var items = someEnumerable.OrderByDescending();

P
Paul Zahra

尝试这个:

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

P
Paul Zahra

尝试另一种方式:

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

Queryable.ThenBy


A
Alexander Ryan Baggett

这仅适用于您有一个数字字段的情况,但您可以在字段名称前放置一个减号,如下所示:

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

但是,当您在 int?double?decimal? 字段上运行它时,它的工作方式与 OrderByDescending 略有不同。

OrderByDescending 上会发生什么,空值将位于末尾,而使用此方法,空值将位于开头。如果您想在不将数据拆分成片段并稍后拼接的情况下随机排列空值,这很有用。


F
Fuzzybear

LastOrDefault() 通常不工作,但使用 Tolist() 它会工作。没有必要像这样使用 OrderByDescending 使用 Tolist()

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();