I have this code similar to this post
List<MyObject> myList = new List<MyObject>(){new MyObject { Number1 = 1, Number2 = 2, Number3 = 3 },
                                             new MyObject { Number1 = 1, Number2 = 2, Number3 = 3 }};
var listWithoutDuplicated = myList
    .GroupBy(x => new { x.Number1, x.Number2, x.Number3 })
    .Select(x => x.First());
int counter = 0;
foreach (var item in listWithoutDuplicated)
{
    counter ++;
} 
That code would return counter = 1, so it works fine, but why is it necessary .Select(x => x.First()); and not only .First(); at the end?
// This code would not remove duplicates.
var listWithoutDuplicated = myList
    .GroupBy(x => new { x.Number1, x.Number2, x.Number3 })
    .First();
Thanks a lot.
 
     
    