I have some objects:
class Foo { public Guid id; public string description; } var list = new List<Foo>(); list.Add(new Foo() { id = Guid.Empty, description = 'empty' }); list.Add(new Foo() { id = Guid.Empty, description = 'empty' }); list.Add(new Foo() { id = Guid.NewGuid(), description = 'notempty' }); list.Add(new Foo() { id = Guid.NewGuid(), description = 'notempty2' });
I would like to process this list in such a way that the id field is unique, and throw away the non-unique objects (based on id).
The best I could come up with is:
list = list.GroupBy(i => i.id).Select(g=>g.First()).ToList();
Is there a nicer/better/quicker way to achieve the same result.
A very elegant and intention revealing option is to define a new extension method on IEnumerable
So you have:
And …
A similar helper class can be built to compare objects. (It will need to do better null handling)