C# 如何在两层深的对象上执行LINQ Where操作并从中生成平面列表?
我有一个EF DB上下文查询,它生成如下所示的对象列表:C# 如何在两层深的对象上执行LINQ Where操作并从中生成平面列表?,c#,linq,entity-framework-core,C#,Linq,Entity Framework Core,我有一个EF DB上下文查询,它生成如下所示的对象列表: public interface Parent { public string Name { get; set; } public virtual ICollection<Child> Children {get; set;} } public interface Child { public string Name {get; set;} public boolean isValid {g
public interface Parent
{
public string Name { get; set; }
public virtual ICollection<Child> Children {get; set;}
}
public interface Child
{
public string Name {get; set;}
public boolean isValid {get; set;}
}
var list.Where(x => x.Children.Any(child => child.isValid)).toList();
我希望能够查询每个父级,提取每个具有isValid=true的子级的详细信息,然后将它们全部存储在一个列表中,但我无法理解语法
我试着做一些类似的事情
list.Where(x => x.Children.Where(child => child.isValid).toList()).toList();
但是上面只生成了一个IList,我已经用这样的表达式实现了这一点:
public interface Parent
{
public string Name { get; set; }
public virtual ICollection<Child> Children {get; set;}
}
public interface Child
{
public string Name {get; set;}
public boolean isValid {get; set;}
}
var list.Where(x => x.Children.Any(child => child.isValid)).toList();
关键字Any在这种情况下非常强大