IQueryableに空の行を追加する方法は?
-
07-07-2019 - |
質問
IQueryable 変数が入力されている場合。
リストの最後に新しい空のエントリをどのように追加しますか?
これが私がしなければならないことです:
- エントリが2つある場合、3つの空のエントリを追加します
- エントリが0の場合、5つの空のエントリを追加します
- エントリが5つある場合は、空のエントリを5つ追加します
パターンが表示され、 asp.net のリピーター用になりました。
単に汎用リスト(。toList())を作成し、追加機能を使用するか、これを行うより良い方法はありますか?
解決
まあ、それをIEnumerable<T>
に変換してよければ、使用できます
query.Concat(Enumerable.Repeat(new SomeRow(), 5)
.Take(5);
これにより、同じ余分な行が5回追加されます(そして合計が5に削減されます)。行を編集できるようにする必要がある場合、これは機能しません。そのためには、次のようなものが必要です。
query.AsEnumerable()
.Concat(Enumerable.Range(1, 5).
.Select(ignored => new SomeRow())
.Take(5);
(同じ関数をn
回呼び出す簡単な方法があるとは思いませんが、間違っている可能性があります。)
編集:コメントに基づいてAsEnumerable()
への呼び出しを追加しました。基本的にAsEnumerable
を呼び出すと、<!> quot; SQLビットが終了します。残りはインプロセスで行います。<!> quot;
他のヒント
まあ、ToListして、Lengthプロパティを使用して、次に何をすべきかを判断します。
しかし、それをしたくない場合は、IEnumerableで5つの空のエントリを使用してUnionを実行し、結果に対してTake(5)を実行できます。冗長ではなく、短いものではないようです。
所属していません StackOverflow