2010-02-16 38 views
1

使用LINQ to entities,我试图根据另一个列表筛选列表。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

三个不同的对象 - 酒吧有许多bazes,但没有明确的关系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

甜!如果你认为他们是正确的或者解决了你的问题,别忘了接受答案,我发现你只接受了你一半的问题。 –

+0

显然我问难题:) – chris