通常のLinqの文法ではorderby xxx descending
はとても簡単ですが、Lambda式でこれを行うにはどうすればよいでしょうか。
Brannonが言うように、それは OrderByDescending
そして ThenByDescending
です。
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);
System.Linq.Enumerable.OrderByDescending()
を使いますか?
例えば:
var items = someEnumerable.OrderByDescending();
これを試して:
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);
}
これを別の方法で試してください。
var qry = Employees
.OrderByDescending (s => s.EmpFName)
.ThenBy (s => s.Address)
.Select (s => s.EmpCode);
これは数値フィールドがある状況でのみ機能しますが、次のようにフィールド名の前にマイナス記号を付けることができます。
reportingNameGroups = reportingNameGroups.OrderBy(x=> - x.GroupNodeId);
ただし、int?
、double?
、またはdecimal?
フィールドで実行している場合、これはOrderByDescending
とは少し異なります。
OrderByDescending
では、nullが最後にくるようになりますが、このメソッドではnullが先頭になります。データを分割して後で結合することなく、nullをシャッフルしたい場合に便利です。
LastOrDefault()
は通常は機能しませんが、Tolist()
を使用すると機能します。このようにOrderByDescending
を使用する必要はありませんTolist()
。
GroupBy(p => p.Nws_ID).ToList().LastOrDefault();