2010-04-15 3 views
2

J'essaie d'obtenir tous les actifs où la propriété de classe est égale à l'une des valeurs dans selectedIClassesList;Aidez-moi avec la requête Linq s'il vous plaît

Quelque chose comme ceci:

from x in Assets where selectedIClassesList.Contains(x.Class) select x 
+0

Il semble que vous ayez besoin de nous donner un peu plus de contexte dans votre question. Utilisez-vous LINQ to Objects, LINQ to SQL, LINQ to Entities, etc. À quoi ressemble votre classe Assets? À quoi ressemble le type d'Assets.Class? À quoi ressemble l'interface IClassesList? – StriplingWarrior

Répondre

3

Vous pouvez faire une jointure ...

var query = from a in Assets 
      join s in selectedClassesList on a.Class equals s 
      select a; 
+0

+1 Battez-moi! –

2
Assets.Where(x=>selectedIClassesList.Contains(x.Class)); 
0

Si je comprends bien, votre problème est que IClassesList ne dispose pas d'une méthode contient ? Si IClassesList est un IEnumerable du même type d'objet que x.Class, cela devrait fonctionner.

from x in Assets where selectedIClassesList.Any(s => s == x.Class) select x 

Pour de meilleures performances, vous feriez bien de créer un dictionnaire, cependant.

var selectedClassesDict = selectedIClassesList.ToDictionary(s => s); 
var selectedAssets = from a in Assets 
        where selectedClassesDict.ContainsKey(a.Class) 
        select a; 
+0

Impossible de créer une valeur constante de type "Type de fermeture". Seuls les types primitifs ('tels que Int32, String et Guid') sont pris en charge dans ce contexte. – Agzam

Questions connexes