43

I tried this code for adding b to books:

IEnumerable<Book> books =null;
foreach (Book b in context.Books.AsEnumerable())
    if (someConditions)
       books = books.Concat(new[] {b});

but gives me this error on last line of code:

System.ArgumentNullException: Value cannot be null. Parameter name: first

it seems that null Collection could not concatenated. I use EF,so how should I initialize my Collection that have no thing in it and I could concatenate to it?


try this

http://jsfiddle.net/UBfCE/68/

   .ribbon-wrapper{
    margin:0 0 0 212px;
    position:absolute;
    }
4

5 に答える 5

26
IEnumerable<Book> books = new List<Book>();
于 2013-07-24T10:14:23.073 に答える
4

これはあなたがやろうとしていることです:

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);

...しかし、なぜこのようにしたい/する必要があるのか​​ についていくつか質問があります。

于 2016-04-04T02:12:32.477 に答える
4

個人的には、次のようにします。

IEnumerable<Book> books = new Book[0];

リストを使用するのではなく。

于 2013-07-24T10:26:10.070 に答える
1

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();
于 2013-07-24T10:25:02.600 に答える