【发布时间】:2013-07-23 18:02:44
【问题描述】:
我尝试使用此代码将b 添加到books:
IEnumerable<Book> books =null;
foreach (Book b in context.Books.AsEnumerable())
if (someConditions)
books = books.Concat(new[] {b});
但是在最后一行代码给了我这个错误:
System.ArgumentNullException:值不能为空。 参数名称:first
似乎null Collection 无法连接。我使用 EF,那么我应该如何初始化我的 Collection 里面没有任何东西,我可以连接到它?
【问题讨论】:
-
你不能在 null 上运行方法
Concat -
IEnumerable
books = new List (); -
IEnumerable<Book> books = Enumerable.Empty<Book>(); -
@VyacheslavVolkov 这应该是一个答案。
-
其他人已经回答了您的问题。但是,通过连接大量
Book[]类型的长度为1 的数组来创建IEnumerable<Book>仍然非常低效,而且有些丑陋。考虑使用 LinqWhere过滤您的书籍,就像在 @Damith 的评论中一样,或者可能重写以使用循环中的yield return b;(将此循环提取到一个新方法,一个 iterator 块)。
标签: c# linq linq-to-entities concatenation argumentnullexception