【发布时间】:2012-11-12 18:30:38
【问题描述】:
我想使用 Linq 从集合中选择一组不同的元素而不创建 IEqualityComparer 类。我不知道如何创建一个 lambda 表达式,该表达式被评估为 IEqualityComparer 以与Distinct() 一起使用。因此,我使用分组来选择具有不同名称的客户:
var distinctCustomers = new List<Customer>();
var groups= customers.GroupBy (cust => cust.Name);
foreach (var g in groups)
{
foreach (var customer in g)
{
distinctCustomers.Add (customer);
break;
}
}
但这似乎很恶心。
我想将Distinct 与 lambda 表达式一起使用
var distinctCustomers = customers.Distinct ( <lambda here ?> )
或者比上面列出的更简洁的 Linq 表达式。
有什么想法吗?
【问题讨论】:
-
你的意思是你想区分某个值
-
您正在寻找 DistinctBy - 不包含在 BCL 中,但各种实现都是现成的
-
我建议实现 MoreLinq dll,因为它已经内置了不同的功能 code.google.com/p/morelinq