c# – Distinct on a specific field – Education Career Blog

I have a class structure:

class MyEx{
public int Prop1;
public int Prop2;
public int Prop3

Prop1 and Prop 2 are always the same , Prop3 varies.
this class I want to retrieve from a longer the end should be something like

select new MyEx { Prop1=something;
                  Prop2= something2;

the problem is that something3 is not unique , so I would like to apply a Distinct to thw query in order to obtain the class above with distinct Prop3 values.
But this does not seem to work.
Any ideas why?


I think you want DistinctBy from MoreLINQ:

var query = items.DistinctBy(x => x.Prop3);


A bit like so?

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

Leave a Comment