À l'aide de LINQ, comment choisir conditionnelle de certains articles, mais lorsqu'aucune des conditions de sélectionner tous?

Je veux sélectionner les éléments à partir myCollection à l'aide de myFilters de filtrage:

var myFilters = new List<string> {"111", "222"};
var myCollection = new List<SomeClass> {
                      new SomeClass ("111"), 
                      new SomeClass ("999")
                   };

from filter in myFilters
from item in myCollection
where item.Name == filter
select item

serait de retour "111".

Toutefois, si myFilters est vide je veux retourner tous les éléments de myCollection.

var myFilters = new List<string> ();
var myCollection = new List<SomeClass> {
                          new SomeClass ("111"), 
                          new SomeClass ("999")
                    };

//Here's where I'm lost...
from filter in myFilters
from item in myCollection
where item.Name == filter
select item

serait de retour tous les articles ("111" et "999").

Vous ne serez pas en mesure de le faire avec une seule requête, car les types sont différents. Dans un cas, vous êtes de retour d'un IEnumerable<SomeClass> et dans l'autre, vous êtes de retour d'un IEnumerable<string>. Les choses seraient différentes si votre requête est terminée avec sélectionner un élément.Nom au lieu de sélectionner un élément.
"première collection" et "deuxième de la collection" serait plus clair si la variable locale noms ont été référencé au lieu. Quelque chose comme: "Toutefois, lorsque myFilters est vide, je veux le retour de tous les articles dans myCollection sans filtrage."
Vous avez raison. Beaucoup plus clair maintenant, je pense.
Je sais que je suis un peu en retard, peut vous fournir le code de votre SomeClass? Je me demande à quoi ça constructeur retourne.
Ainsi, un constructeur renvoie une instance de SomeClass.

OriginalL'auteur Stécy | 2012-09-13