本文介绍了不同的()与拉姆达?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对,所以我有一个枚举,并希望从中获得不同的值。

使用 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());

这篇关于不同的()与拉姆达?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 00:34