【发布时间】:2009-02-06 11:51:53
【问题描述】:
我想获取列表中的不同值,但不是通过标准相等比较。
我想做的是这样的:
return myList.Distinct( (x, y) => x.Url == y.Url );
我不能,Linq 中没有扩展方法可以做到这一点——只有一个需要 IEqualityComparer 的扩展方法。
我可以用这个来破解它:
return myList.GroupBy( x => x.Url ).Select( g => g.First() );
但这似乎很混乱。它也不完全做同样的事情——我只能在这里使用它,因为我只有一个键。
我也可以添加自己的:
public static IEnumerable<T> Distinct<T>(
this IEnumerable<T> input, Func<T,T,bool> compare )
{
//write my own here
}
但这似乎更像是在写一些本来就应该存在的东西。
有人知道为什么没有这种方法吗?
我错过了什么吗?
【问题讨论】: