I have a list of objects that has some duplicates by a property. I would like to get all non-duplicate and also 1 of the duplicates based on a condition.
For eg.
You can use GroupBy
to do this:
var results = items.GroupBy(item => item.Code)
.Select(g => g.OrderByDescending(i => i.Grade)
.First());
I suggest that you first GroupBy
the Code
property, and then select the Max
of each element in the group
Something like
list.GroupBy(item=>item.Code).Select(item=>new {code = item.Key, grade = item.Max(i=>i.Grade)}).ToList();