如何使用LINQ查找同一集合的两个属性之间的相交?

时间:2010-04-28 21:27:29

标签: linq intersect

给定IList<Foo>的数据集如下所示:

ID   CHILD  PARENT TYPE  
1   102    101    UPSELL  
1   103    101    UPSELL  
2   102    101    BONUS  
2   104    103    BONUS  
3   102    101    BONUS  
4   102    101    PRODUCT  
4   104    102    PRODUCT  

如何使用LINQ查找父ID相同的子项?

所需的输出

ID   CHILD  PARENT TYPE 
4   102    101    PRODUCT

1 个答案:

答案 0 :(得分:3)

我认为这就是你要找的东西。我先按ID分组,这样我就可以单独处理每个组,但可能有办法将它组合成一个查询。

var grouping = foos.GroupBy(f => f.ID);
foreach(var g in grouping)
{
    var result = (from f1 in g from f2 in g where f1.Child == f2.Parent select f1);
    if( result.Any())
    {
        // you have your answer
    }
}