我有这个清单:
CustomerA
CustomerB
CustomerC
我想使用LINQ返回此内容:
CustomerA
CustomerC
因为 CustomerA 和 CustomerB 具有相同的鳕鱼: Cod456
我的课程:
public class Customer
{
public string Name { get; set; }
public List<Cod> Cods { get; set; }
}
public class Cod
{
public string Number { get; set; }
}
我的尝试不在GroupBy行中构建。
var customersOK = customersDuplicatedCods
.GroupBy(p => p.Cods.Number)
.Select(g => g.First())
.ToList();
答案 0 :(得分:1)
听起来你实际上并不希望它们分组,你只需要删除重复项。
This Q&amp; A解释了如何做到这一点。
基本上你会创建一个IEqualityComparer<Customer>
class DistinctItemComparer : IEqualityComparer<Customer>
{
public bool Equals(Customer x, Customer y)
{
return x.Cods.Intersect(y.Cods).Any();
}
public int GetHashCode(Customer obj)
{
return 0;
}
}
并通过customers.Distinct(new DistinctItemComparer())