ef 4.1 LINQ将元素过滤到集合中

时间:2013-05-29 13:11:59

标签: c# linq entity-framework

我首先使用实体​​框架代码。我有一个集合让我们说:

 IDbSet<A> As {get;set;}

A是这样的对象:

 public class A
 {
    public int Id {get;set;}
    public string name {get;set};
    ....
    public IList<B> Bs {get;set;}
 }

和B是:

 public clas B
 {
    public int Id {get;set;}
    public string name {get;set;}
 }

使用linq我想在其IList中过滤包含B.name ==“something”的As,那么如何实现呢?我正在尝试做类似的事情:

context.As.Where(a => a.Bs.contains(....));

4 个答案:

答案 0 :(得分:3)

您可以使用Any()

context.As.Where(a => a.Bs.Any(b => b.name == "something").ToList();

它需要一个谓词,并在匹配时返回,使其有效。

答案 1 :(得分:1)

context.As.Where(a => a.Bs.Any(x => x.name=="something"));

答案 2 :(得分:1)

我会使用Any()方法。

var result = context.As.Where(a => a.Bs.Any(b => b.Name == "something"));

答案 3 :(得分:1)

嗯,是的,你这样做:

var AsWithSomethingBs = 
                    context.As.Where(a => a.Bs.Any(b => b.Name == "Something"));

这基本上说:给我所有的A,其中任何A的B都有一个等于“Something”的名字