我有一个班级结构:
class MyEx{
public int Prop1;
public int Prop2;
public int Prop3
}
Prop1和Prop 2始终相同,Prop3各不相同。 我希望从更长的末尾检索这个类应该像
select new MyEx { Prop1=something;
Prop2= something2;
Prop3=something3;
}
问题是something3不是唯一的,所以我想对查询应用Distinct以获得具有不同Prop3值的上述类。 但这似乎不起作用。 有什么想法吗? 感谢
答案 0 :(得分:5)
我想你想DistinctBy
来自MoreLINQ:
var query = items.DistinctBy(x => x.Prop3);
答案 1 :(得分:4)
有点像这样吗?
public static class SomeHelperClass
{
public static IEnumerable<TSource> DistinctBy<TSource, TValue>(
this IEnumerable<TSource> source, Func<TSource,TValue> selector)
{
var hashset = new HashSet<TValue>();
foreach (var item in source)
{
var value = selector(item);
if (hashset.Add(value)) yield return item;
}
}
}
然后:
var distinct = list.DistinctBy(item => item.Prop3);