LINQ将元素过滤到集合中

本文关键字:集合 过滤 元素 LINQ | 更新日期: 2023-09-27 18:15:57

我首先使用实体框架代码。我有一个集合比如说:

 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;}
 }

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

使用linq,我想过滤包含B.name =="某些东西"的列表,那么如何实现这一点?我想做的是:

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

LINQ将元素过滤到集合中

你可以使用Any()

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

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

我会使用Any()方法。

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

嗯,是的,你这样做:

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

这基本上是说:给我所有A的b的名字等于"某"的A

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