b
をbooks
に追加するためにこのコードを試しました。
IEnumerable<Book> books =null;
foreach (Book b in context.Books.AsEnumerable())
if (someConditions)
books = books.Concat(new[] {b});
しかし、コードの最後の行にこのエラーが表示されます:
System.ArgumentNullException:値をnullにすることはできません。パラメーター名:最初
null
Collection
は連結できなかったようです。 EFを使用しているので、何も含まれていないCollection
を初期化する必要があり、連結できますか?
いくつかの基準でcontext.Booksをフィルター処理するだけです。
IEnumerable<Book> books = context.Books.Where(b => someConditions);
それでも空のIEnumerableが必要な場合は、Enumerable.Empty()を呼び出すことができます。
IEnumerable<Book> books = Enumerable.Empty<Book>();
IEnumerable<Book> books = new List<Book>();
個人的に私はちょうど行く:
IEnumerable<Book> books = new Book[0];
リストを使用するのではなく。
これはあなたがやろうとしていることです:
IEnumerable<Book> books = Enumerable.Empty<Book>();
books = books.Concat(context.Books.AsEnumerable().Where(b => someCondition));
または、nullから開始する場合はこれを実行できます。
IEnumerable<Book> books = null;
var moreBooks = context.Books.AsEnumerable().Where(b => someCondition);
books = books == null ? moreBooks : books.Concat(moreBooks);
...あなたがこのように物事をしたい/必要な理由についていくつか質問がありますが。
ListのようなIEnumerableの空のオブジェクトとしてブックを作成する必要がありますが、ループの後にブックのToList()を呼び出すことを忘れないでください。例えば:
IEnumerable<int> books = new List<int>(); IEnumerable<int> books2 = new int[] { 1, 2, 3, 4 }; foreach (int b in books2) if (b > 2) books = (new[] { b }).Concat(books); books = books.ToList();