J'ai essayé ce code pour ajouter b
à books
:
IEnumerable<Book> books =null;
foreach (Book b in context.Books.AsEnumerable())
if (someConditions)
books = books.Concat(new[] {b});
mais me donne cette erreur sur la dernière ligne de code:
System.ArgumentNullException: la valeur ne peut pas être nulle. Nom du paramètre: premier
il semble que null
Collection
n'a pas pu être concaténé. J'utilise EF, alors comment dois-je initialiser mon Collection
qui ne contient rien et que je pourrais concaténer?
Il semble que tout ce que vous voulez faire est de filtrer votre contexte. Livres selon certains critères.
IEnumerable<Book> books = context.Books.Where(b => someConditions);
Si vous avez toujours besoin du IEnumerable vide, vous pouvez simplement appeler Enumerable.Empty ():
IEnumerable<Book> books = Enumerable.Empty<Book>();
IEnumerable<Book> books = new List<Book>();
Personnellement, j'irais avec:
IEnumerable<Book> books = new Book[0];
plutôt que d'utiliser une liste.
Voici ce que vous essayez de faire:
IEnumerable<Book> books = Enumerable.Empty<Book>();
books = books.Concat(context.Books.AsEnumerable().Where(b => someCondition));
Vous pouvez également le faire si vous souhaitez partir de null:
IEnumerable<Book> books = null;
var moreBooks = context.Books.AsEnumerable().Where(b => someCondition);
books = books == null ? moreBooks : books.Concat(moreBooks);
... bien que j'aie plusieurs questions sur la raison pour laquelle vous voulez/devez faire les choses de cette façon.
Vous devez créer des livres en tant qu'objet vide IEnumerable comme List, mais n'oubliez pas d'appeler, après boucle, ToList () sur les livres. Par exemple:
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();