3

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

 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

4 回答 4

3

您可以使用任何()

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

它接受一个谓词并在匹配时返回,使其高效。

于 2013-05-29T13:16:44.227 回答
1
context.As.Where(a => a.Bs.Any(x => x.name=="something"));
于 2013-05-29T13:15:17.710 回答
1

我会使用Any()方法。

var result = context.As.Where(a => a.Bs.Any(b => b.Name == "something"));
于 2013-05-29T13:15:50.337 回答
1

嗯,是的,你这样做:

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

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

于 2013-05-29T13:15:53.977 回答