C# 基于子属性linq to sql查找父级

C# 基于子属性linq to sql查找父级,c#,sql,linq,linq-to-sql,C#,Sql,Linq,Linq To Sql,假设我们有一个sql关系,可以使用C#类像这样建模 公共类父类 { 公共int ID{get;set;} 公共列表子项{get;set;} } 公营儿童 { 公共int ID{get;set;} 公共父级{get;set;} 公共整数{get;set;} } 我也知道父母只有两个孩子。我会发现所有的父母都满足不同的标准吗?假设一个孩子的数字为0,而另一个孩子的数字为1,在这里用四肢行走 from p in context.Parents where p.Children.Count =

假设我们有一个sql关系,可以使用C#类像这样建模

公共类父类
{ 
公共int ID{get;set;}
公共列表子项{get;set;}
} 
公营儿童
{ 
公共int ID{get;set;}
公共父级{get;set;}
公共整数{get;set;}
} 

我也知道父母只有两个孩子。我会发现所有的父母都满足不同的标准吗?假设一个孩子的数字为0,而另一个孩子的数字为1,在这里用四肢行走

from p in context.Parents
where p.Children.Count == 2 // sounds like you can skip this one
where p.Children.Any(c => c.Number == 0)
where p.Children.Any(c => c.Number == 1)
select p;
(from p in context.Parents 
 where p.Children.Count == 2 
 where p.Children.Any(c => c.Number == 0) 
 select p).Where(p => p.Children.Any(c => c.Number == 1));

我认为答案很接近。这将返回两个孩子的数字都为0或1的情况。此答案有效,因为有两个孩子-第二个“where”确保至少有一个孩子的数字==0,第三个“where”确保至少有一个孩子的数字==1。因为这两个孩子显然不可能是同一个孩子,而且只有两个孩子,所以它一定是正确的父母。至少乍一看,这和我给出的答案一样——我遗漏了什么吗?
from o in context.Parents where o.Children.Count == 2 && o.Children.Any(x => x.Number == 0) && x.Children.Any(x => x.Number == 1) select o;
(from p in context.Parents 
 where p.Children.Count == 2 
 where p.Children.Any(c => c.Number == 0) 
 select p).Where(p => p.Children.Any(c => c.Number == 1));