>有效地识别.NET中的唯一值
>>
从集合中提取独特元素是经常的编程需求。 。 Distinct()
接受Distinct()
>,但直接使用lambda表达式进行此比较而不是本地支持。IEqualityComparer
>
>使用IEqualityComparer
的简洁方法
inline:IEqualityComparer
>
<code class="language-csharp">var distinctValues = myCustomerList.Distinct( EqualityComparer<Customer>.Create((c1, c2) => c1.CustomerId == c2.CustomerId) );</code>这种方法虽然功能性,但会感到有些麻烦。
替代:利用
和GroupBy
Select
>
更优雅的替代方案绕过了对显式IEqualityComparer
的需求。 这种方法利用GroupBy
和Select
:
<code class="language-csharp">IEnumerable<Customer> filteredList = originalList .GroupBy(customer => customer.CustomerId) .Select(group => group.First());</code>
此将基于指定的密钥(在这种情况下CustomerId
)分组元素,然后从每个组中选择第一个项目,从而有效地过滤副本。 这为使用lambda表达式实现不同的值提供了一个更清洁,更可读的解决方案。
以上是如何使用lambda表达式在.NET中获得不同的值?的详细内容。更多信息请关注PHP中文网其他相关文章!