LINQ標準のクエリーオペレータソートorderby、thenby、Take
シーケンスをソートするには、orderby句を使用します.前にorderby descending句を使った例を復習します.ここで、選手は試合を勝ち取った回数によって降順に並べ替えられ、試合を勝ち取った回数はキーワードセレクタで指定される.
orderby句解析はOrderBy()メソッド、orderby descending句解析はOrderBy Descending()メソッド:var racers=Formula 1.GetChampions(). Where(r = > r.Country == "Brazil"). OrderByDescending(r = > r.Wins). Select(r = > r);
OrderBy()メソッドとOrderByDescending()メソッドは、IOrderEnumerableを返します.このインタフェースはインタフェースIEnumerableから派生しているが、CreateOrderedEnumerable-()という追加の方法が含まれている.この方法は、シーケンスをさらにソートするために使用されます.
キーワードセレクタに従ってソートする場合、両方の順序が同じであれば、ThenBy()メソッドとThenByDescending()メソッドを使用してソートを続行できます.
この2つの方法はIOrderEnumerableが必要ですが、このインタフェースにも戻ります.
したがって、任意の複数のThenBy()メソッドとThenByDescending()メソッドを追加して、セットをソートすることができます.
LINQクエリーを使用する場合は、orderby句にソートに使用するすべての異なるキーワード(カンマで区切られた)を追加するだけです.
ここでは、すべての選手が国順に並べられ、姓順に並べられ、最後に名前順に並べられます.
LINQクエリ結果に追加されたTake()拡張メソッドは、最初の10個の結果を抽出するために使用されます.
Lambda式は、OrderBy()メソッドとThenBy()メソッドを使用して、同じ操作を実行できます.
private static void Ordering()
{
var racers = from r in Formula1.GetChampions()
where r.Country == "Brazil"
orderby r.Wins descending
select r;
foreach (var racer in racers)
{
Console.WriteLine("{0:C}: {0:L}, {0:F}", racer); //
}
}
orderby句解析はOrderBy()メソッド、orderby descending句解析はOrderBy Descending()メソッド:var racers=Formula 1.GetChampions(). Where(r = > r.Country == "Brazil"). OrderByDescending(r = > r.Wins). Select(r = > r);
OrderBy()メソッドとOrderByDescending()メソッドは、IOrderEnumerable
キーワードセレクタに従ってソートする場合、両方の順序が同じであれば、ThenBy()メソッドとThenByDescending()メソッドを使用してソートを続行できます.
この2つの方法はIOrderEnumerable
したがって、任意の複数のThenBy()メソッドとThenByDescending()メソッドを追加して、セットをソートすることができます.
LINQクエリーを使用する場合は、orderby句にソートに使用するすべての異なるキーワード(カンマで区切られた)を追加するだけです.
ここでは、すべての選手が国順に並べられ、姓順に並べられ、最後に名前順に並べられます.
LINQクエリ結果に追加されたTake()拡張メソッドは、最初の10個の結果を抽出するために使用されます.
private static void Ordering()
{
var racers = (from r in Formula1.GetChampions()
orderby r.Country, r.LastName, r.FirstName
select r).Take(10);
foreach (var racer in racers)
{
Console.WriteLine("{0:C}: {0:L}, {0:F}", racer); //
}
}
Lambda式は、OrderBy()メソッドとThenBy()メソッドを使用して、同じ操作を実行できます.
private static void Ordering()
{
var racers = Formula1.GetChampions().
OrderBy(r => r.Country).
ThenBy(r => r.LastName).
ThenBy(r => r.FirstName).
Take(10);
foreach (var racer in racers)
{
Console.WriteLine("{0:C}: {0:L}, {0:F}", racer); //
}
}