Как инициализировать IEnumerable, чтобы быть пустым и позволить ему Конкат?
Я пробовал этот код для добавления b
to books
:
IEnumerable<Book> books =null;
foreach (Book b in context.Books.AsEnumerable())
if (someConditions)
books = books.Concat(new[] {b});
но дает мне эту ошибку на последней строке кода:
5 ответов
это швы все, что вы хотите сделать, это фильтровать контекст.Книги по некоторым критериям.
IEnumerable<Book> books = context.Books.Where(b => someConditions);
Если вам все еще нужен пустой IEnumerable, вы можете просто вызвать Enumerable.Пустой():
IEnumerable<Book> books = Enumerable.Empty<Book>();
это то, что вы пытаетесь сделать:
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);
...хотя у меня есть несколько вопросов о том, почему вы хотите / должны делать вещи таким образом.
вам нужно создать книги как IEnumerable пустой объект, такой как List, но не забудьте вызвать, после цикла, 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();