English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

LINQ生成演算子 Empty, Range, Repeat

LINQには生成演算子DefaultIfEmpty、Empty、Range&Repeatが含まれています。Empty、Range、RepeatメソッドはIEnumerableまたはIQueryableの拡張メソッドではなく、静的クラスEnumerableに定義された静的メソッドです。  

メソッド説明
Empty空のコレクションを返します
Range最初の要素から始まり、指定された数の順序値を持つ要素を持つIEnumerable <T>型の集合を生成します。
Repeat指定された要素数を持つIEnumerable <T>型の集合を生成し、各要素は指定された値を含みます。

Empty

Empty()は他のLINQメソッドと同様に、IEnumerableまたはIQueryableの拡張メソッドではありません。これはEnumerable静的クラスに含まれる静的メソッドです。したがって、他の静的メソッド(例えばEnumerable.Empty <TResult>())と同様に呼び出すことができます。Empty()メソッドは指定されたタイプの空のコレクションを返します。以下のように表示されます。

var emptyCollection1 = Enumerable.Empty<string>();
var emptyCollection2 = Enumerable.Empty<Student>();
Console.WriteLine("Count: {0} ", emptyCollection1.Count());
Console.WriteLine("Type: {0} ", emptyCollection1.GetType().Name );
Console.WriteLine("Count: {0} ",emptyCollection2.Count());
Console.WriteLine("Type: {0} ", emptyCollection2.GetType().Name );
出力:
Type: String[]
Count: 0
Type: Student[]
Count: 0

Range

Range()メソッドは、指定された要素数と最初の要素からの順序値を持つIEnumerable <T>型の集合を返します。

var intCollection = Enumerable.Range(10, 10);
Console.WriteLine("総件数: {0} ", intCollection.Count());
for(int i = 0; i < intCollection.Count(); i++)
    Console.WriteLine("値、インデックス位置が {0} : {1}
出力:

総件数: 10
値、インデックス位置が 0 : 10
値、インデックス位置が 1 : 11
値、インデックス位置が 2 : 12
値、インデックス位置が 3 : 13
値、インデックス位置が 4 : 14
値、インデックス位置が 5 : 15
値、インデックス位置が 6 : 16
値、インデックス位置が 7 : 17
値、インデックス位置が 8 : 18
値、インデックス位置が 9 : 19

上記の例では、Enumerable.Range(10, 10)を生成しました。10個の整数要素の集合、その順序値は10を開始します。第1引数は要素の初期値を指定し、第2引数は作成する要素数を指定します。

Repeat

Repeat()メソッドは指定された数の要素でIEnumerable <T>型の集合を生成し、各要素は指定された値を含みます。

var intCollection = Enumerable.Repeat<int>(10, 10);
Console.WriteLine("合計数: {0} ", intCollection.Count());
for(int i = 0; i < intCollection.Count(); i++)
    Console.WriteLine("値、インデックス位置が {0} : {1}
出力:
合計数:10
値、インデックス位置が 0: 10
値、インデックス位置が 1: 10
値、インデックス位置が 2: 10
値、インデックス位置が 3: 10
値、インデックス位置が 4: 10
値、インデックス位置が 5: 10
値、インデックス位置が 6: 10
値、インデックス位置が 7: 10
値、インデックス位置が 8: 10
値、インデックス位置が 9: 10

上記の例では、Enumerable.Repeat<int>(10, 10) 次に、10重複値は0個です10の整数型要素の集合、第1引数はすべての要素の値を指定し、第2引数は作成する要素数を指定します。