本文介绍了不同的()与拉姆达?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
对,所以我有一个枚举,并希望从中获得不同的值。
使用 System.Linq的
,还有当然就是所谓的扩展方法鲜明
。在简单的情况下,它可以在没有参数被使用,如:
VAR distinctValues = myStringList.Distinct();
当然好,但如果我有,我需要指定平等对象的枚举,唯一可用的过载是:
VAR distinctValues = myCustomerList.Distinct(someEqualityComparer);
本相等比较器参数必须是的IEqualityComparer&LT的实例; T>
。我能做到这一点,当然,但它有点冗长,那么,cludgy。
我本来期望的是,将采取一个lambda过载,说Func键< T,T,BOOL>
VAR distinctValues
= myCustomerList.Distinct((C1,C2)= GT; c1.CustomerId == c2.CustomerId);
任何人都知道,如果一些这样的扩展存在,或某些等效解决方法吗?还是我失去了一些东西?
另外,有指定的IEqualityComparer内联(我难堪)的一种方式?
更新
我发现由Anders Hejlsberg为一个post在关于这个问题的MSDN论坛。他说:
I suppose that makes sense..
解决方案
IEnumerable<Customer> filteredList = originalList
.GroupBy(customer => customer.CustomerId)
.Select(group => group.First());
这篇关于不同的()与拉姆达?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!