用lambdas:
简化linq的Distinct
:一厢情愿?
linq的
,这可能会感觉过于冗长。 像这个假设的例子一样,基于Lambda的超载将变得更加简洁:Distinct
基于lambda的IEqualityComparer
<code class="language-csharp">var distinctValues = myCustomerList.Distinct((c1, c2) => c1.CustomerId == c2.CustomerId);</code>
1。 Distinct
和方法:
此方法使用
>基于键(例如,)的元素,然后从每个组中选择第一个元素。 这有效地过滤了重复。GroupBy
Select
:GroupBy
CustomerId
<code class="language-csharp">IEnumerable<Customer> distinctCustomers = originalList .GroupBy(customer => customer.CustomerId) .Select(group => group.First());</code>
3。 (强烈灰心)基于反射的比较:IEqualityComparer<T>
使用反射来基于属性比较对象非常效率低下且容易出错。 除非绝对必要,否则避免使用这种方法。
缺乏仅兰巴达的过载的根本原因:IEqualityComparer<T>
>操作。 为了一致的行为,比较被视为平等的对象还必须产生相同的哈希代码。 通过需要同时实现和
>。。
以上是Lambda表达式可以简化Linq的独特方法来进行自定义平等比较吗?的详细内容。更多信息请关注PHP中文网其他相关文章!