我想使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
但这似乎很蠢.
我要么使用Distinctlambda表达式
var distinctCustomers = customers.Distinct ( <lambda here ?> )
Run Code Online (Sandbox Code Playgroud)
或者比上面列出的更清洁的Linq表达.
有任何想法吗?
如果你不想重新实现DistinctBy(或使用一个类似的一个在MoreLINQ),您可以通过做到这一点GroupBy和Select在其中只选择每个组中的第一个元素:
var distinctCustomers = customers.GroupBy(cust => cust.Name).Select(g => g.First());
Run Code Online (Sandbox Code Playgroud)