OrderByはラムダ式で降順ですか?


250

通常のLinq文法でorderby xxx descendingは非常に簡単ですが、ラムダ式でこれを行うにはどうすればよいですか。

回答:


428

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

7
「は「降順person.Name順」ORDERBY person.Name降順」
mxmissile

63

使用しSystem.Linq.Enumerable.OrderByDescending()ますか?

例えば:

var items = someEnumerable.OrderByDescending();

21

これを試して:

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

これを別の方法で試してください:

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

Queryable.ThenBy


3

これは数値フィールドがある場合にのみ機能しますが、次のようにフィールド名の前にマイナス記号を付けることができます。

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

ただし、これOrderByDescendingint?or double?またはor decimal?フィールドで実行している場合とは少し異なります。

何が起こるかはOrderByDescendingヌルで終わりますが、この方法ではヌルが最初になります。これは、データを分割して後でスプライスすることなくnullをシャッフルしたい場合に便利です。


1

LastOrDefault()通常は機能しませんが、Tolist()これで機能します。このように使用OrderByDescendingする必要はありませんTolist()

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.