2010-02-16 8 views
1

En utilisant LINQ to entities, j'essaie de filtrer une liste basée sur une autre liste.LINQ to Entites: liste de filtrage basée sur une autre liste

Ma première liste ressemble:

IQueryable<FooViewModel> allFoos = from foo in ctx.Foo 
            select new FooViewModel 
            { 
            code = foo.Code, 
            text = foo.Text, 
            ... 
            }; 

Ma deuxième liste ressemble à:

IQueryable<FooViewModel> myBars = from bar in ctx.Bar.Include("Baz") select bar 

Il y a plusieurs Bazès par bar et baz a des propriétés code et le texte.

Je veux filtrer allFoos pour que je reviens que les éléments où le code == baz.Code & & texte == baz.Text

+0

Pourriez-vous au moins utiliser foo + bar au lieu de baz + bar, prêtant à confusion. :) –

+0

Trois objets différents - la barre a beaucoup de bazes, mais il n'y a pas de relation explicite entre foo et bar.baz – chris

Répondre

1

Vous groupe peut sélectionner comme ceci:

var query = from x in foos 
      from a in bars 
      where x.Name == a.Name 
      select new FooViewModel { code = x.Code, text = x.Text }; 

Vous pouvez aussi bien sûr imbriquer différentes requêtes, par exemple remplacer from a in bars par from a in barQuery.ToList().

+0

C'est proche: j'ai dû changer l'endroit où 'bar.Any (b => b.baz.Code == x.Code && b.baz.Text == x.Text) mais j'ai oublié que je pourrais avoir plusieurs froms là-bas. – chris

+0

Doux! N'oubliez pas d'accepter les réponses si vous pensez qu'elles sont correctes/résolu votre problème, je vois que vous avez seulement accepté la moitié de vos questions. –

+0

Apparemment, je pose des questions difficiles :) – chris

Questions connexes