我首先使用实体框架代码。我有一个集合让我们说:
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(....));
答案 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”的名字