Enumerable.Repeat(100、100)と数値3を連結したいとします。これを行うための最も良い方法は何ですか?
もちろんできますが
Enumerable.Repeat(100, 100).Concat(Enumerable.Repeat(3,1))
、あまり表現力がありません...
Enumerable.Repeat(100、100)と数値3を連結したいとします。これを行うための最も良い方法は何ですか?
もちろんできますが
Enumerable.Repeat(100, 100).Concat(Enumerable.Repeat(3,1))
、あまり表現力がありません...
本当にきれいにしたい場合は、のような拡張メソッドを作成してからConcatSingle
呼び出すのが最善の方法です。
その要素のみを含む中間配列を使用できます。
Enumerable.Range(100, 100).Concat(new []{ 3 });
追加の配列を作成せずにそれを可能にする拡張メソッドを作成することもできます。
public static IEnumerable<T> ToEnumerable<T>(this T obj)
{
yield return obj;
}
これが可能になりました:
Enumerable.Range(100, 100).Concat(3.ToEnumerable());
public static IEnumerable<T> Concat(this IEnumerable<T> source, T item)
{
//the code here is not very expressive to you :)
}
編集メソッド名を使用しないことをお勧めします。Concat
使用するConcatSingle
か、ConcatOne
代わりに、以下のコメントの説明を参照してください。
単一の値をIEnumerableに変換するための拡張メソッドを作成できます
public static class LinqEx
{
public static IEnumerable<T> ToIEnumerable<T>(this T singleItem)
{
yield return singleItem;
}
}
その後、
Enumerable.Repeat(100, 100).Concat(3.ToIEnumerable())