2010-02-16 2 views
1

Используя LINQ для сущностей, я пытаюсь отфильтровать список на основе другого списка.LINQ to Entites: Список фильтров, основанный на другом списке

Мой первый список выглядит следующим образом:

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

Мой второй список выглядит следующим образом:

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

Есть несколько bazes в баре, и БАЗ имеет код и текстовые свойства.

Я хочу, чтобы фильтровать allFoos так, что я вернусь только те элементы, где код == baz.Code & & текст == baz.Text

+0

Не могли бы вы использовать foo + bar вместо baz + bar, сбив с толку. :) –

+0

Три разных объекта - в баре много баз, но нет явных отношений между foo и bar.baz. – chris

ответ

1

Вы можете группа выбирает так:

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

Конечно, вы можете также развернуть разные запросы, например, заменить from a in bars на from a in barQuery.ToList().

+0

. Это близко: мне пришлось сменить место где «где bar.Any (b => b.baz.Code == x.Code && b.baz.Text == x.Text), но я забыл, что у меня может быть несколько оттуда. – chris

+0

Sweet! Не забудьте принять ответы, если вы считаете, что они верны/решили вашу проблему, я вижу, что вы приняли только половину своих вопросов. –

+0

Видимо, я задаю жесткие вопросы :) – chris