public static class ExtensionMethods
{
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
var seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
}
MyList.GroupBy(a=>a.item).select(a=>a.FirstOrDefault()).ToList();//use this
//is equal to
MyList.DistinctBy(a=>a.item).ToList();//its not work with linq
4条答案
按热度按时间ldioqlga1#
可以添加扩展方法
你可以这样使用它
或者,您可以使用通过MoreLinq提供
DistincyBy
7ajki6be2#
另一个示例:
3wabscal3#
njthzxwz4#
现在,在dotnet6.0中,System.Linq命名空间中有一个内置的DistinctBy扩展
https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.distinctby?view=net-6.0&viewFallbackFrom=net-5.0