我尝试使用此代码将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
哪个没有东西,我可以连接到它?
答案 0 :(得分:67)
它接缝你要做的就是过滤你的上下文。按一些标准书。
IEnumerable<Book> books = context.Books.Where(b => someConditions);
如果你仍然需要空IEnumerable,你可以调用Enumerable.Empty():
IEnumerable<Book> books = Enumerable.Empty<Book>();
答案 1 :(得分:21)
IEnumerable<Book> books = new List<Book>();
答案 2 :(得分:4)
就我个人而言:
IEnumerable<Book> books = new Book[0];
而不是使用List。
答案 3 :(得分:2)
这就是你要做的事情:
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);
...虽然我有几个问题,为什么你想要/需要这样做。
答案 4 :(得分:0)
您需要创建书籍作为像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();