区别于特定领域

时间:2010-10-15 10:46:56

标签: c# .net linq

我有一个班级结构:

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值的上述类。 但这似乎不起作用。 有什么想法吗? 感谢

2 个答案:

答案 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);