シーケンスの先頭から、指定された数の連続する要素を返します。
public static IEnumerable<TSource> Take<TSource>
(this IEnumerable<TSource> source, int count)
【VB】
シーケンスの先頭から、指定された数の連続する要素を返します。 <ExtensionAttribute> Public Shared Function Take(Of TSource) (source As IEnumerable(Of TSource), count As Integer) As IEnumerable(Of TSource)簡単に言うと…
シーケンス(配列やコレクション)の先頭から指定された数の要素を返します。
このメソッドは遅延実行されます。 テストデータです。 【C#】
private class Fruit
{
public string Name { get; set; }
public string Rank { get; set; }
public decimal Price { get; set; }
}
var fruits = new List<Fruit>()
{
new Fruit(){Name = "りんご", Rank = "A" , Price = 1000 },
new Fruit(){Name = "みかん", Rank = "A" , Price = 600 },
new Fruit(){Name = "ぶどう", Rank = "B" , Price = 1200 },
new Fruit(){Name = "りんご", Rank = "B" , Price = 800 },
new Fruit(){Name = "みかん", Rank = "A" , Price = 500 }
};
【VB】
Private Class Fruit
Public Property Name As String
Public Property Rank As String
Public Property Price As Decimal
End Class
Dim fruits = New List(Of Fruit)() From
{
New Fruit() With {.Name = "りんご", .Rank = "A", .Price = 1000},
New Fruit() With {.Name = "みかん", .Rank = "A", .Price = 600},
New Fruit() With {.Name = "ぶどう", .Rank = "B", .Price = 1200},
New Fruit() With {.Name = "りんご", .Rank = "B", .Price = 800},
New Fruit() With {.Name = "みかん", .Rank = "A", .Price = 500}
}
Takeメソッドを使用して最初から3つ分の要素を取得します。
【C#】
//Takeメソッドで先頭より3つ分の要素を取得
var top3 = fruits.Take(3);
//出力
foreach(var itm in top3)
Console.WriteLine("名称={0}, ランク={1}, 値段={2}", itm.Name, itm.Rank, itm.Price.ToString("#,##0"));
//名称=りんご, ランク=A, 値段=1,000
//名称=みかん, ランク=A, 値段=600
//名称=ぶどう, ランク=B, 値段=1,200
【VB】
'Takeメソッドで先頭より3つ分の要素を取得
Dim top3 = fruits.Take(3)
'出力
For Each itm In top3
Console.WriteLine("名称={0}, ランク={1}, 値段={2}", itm.Name, itm.Rank, itm.Price.ToString("#,##0"))
Next
'名称=りんご, ランク=A, 値段=1,000
'名称=みかん, ランク=A, 値段=600
'名称=ぶどう, ランク=B, 値段=1,200
Takeメソッドの引数にシーケンスの要素数以上の数を指定しても、例外は発生しません。すべての要素が返ります。
Takeメソッドの引数にシーケンスの要素数以下の数を指定した場合も、例外は発生しません。空のシーケンスが返ります。
【C#】
//要素数以上の数を指定
var lst1 = fruits.Take(9);
//出力
foreach (var itm in lst1)
Console.WriteLine("名称={0}, ランク={1}, 値段={2}", itm.Name, itm.Rank, itm.Price.ToString("#,##0"));
//名称=りんご, ランク=A, 値段=1,000
//名称=みかん, ランク=A, 値段=600
//名称=ぶどう, ランク=B, 値段=1,200
//名称=りんご, ランク=B, 値段=800
//名称=みかん, ランク=A, 値段=500
//要素数以下の数を指定
var lst2 = fruits.Take(-9);
//出力
Console.WriteLine(lst2.Count());
//0
【VB】
'要素数以上の数を指定
Dim lst1 = fruits.Take(9)
'出力
For Each itm In lst1
Console.WriteLine("名称={0}, ランク={1}, 値段={2}", itm.Name, itm.Rank, itm.Price.ToString("#,##0"))
Next
'名称=りんご, ランク=A, 値段=1,000
'名称=みかん, ランク=A, 値段=600
'名称=ぶどう, ランク=B, 値段=1,200
'名称=りんご, ランク=B, 値段=800
'名称=みかん, ランク=A, 値段=500
'要素数以下の数を指定
Dim lst2 = fruits.Take(-9)
'出力
Console.WriteLine(lst2.Count())
'0
※VBの場合、コンパイルオプションで「Option Infer」をONにし、型推論を有効にしてください。
.Net(VB C#) LINQのメソッド一覧
0 件のコメント:
コメントを投稿