Mogę tylko założyć, że nie żyjesz z powodu użycia anonimowego typu, ponieważ odpowiedź udzielona przez Alexa Pecka jest prawidłowa. (i przegłosowałem to).
To jednak sprowadza się do dyskusji na temat kompilatora VB.NET i C#.
W VB.NET, gdy napotkany zostanie typ anonimowy, do celów porównawczych można użyć tylko tych właściwości zadeklarowanych jako właściwości klucza. Tak więc w VB.NET bez klucza, gdy próbujesz dokonać wyraźnego porównania, nic się nie wydarzy.
Read all about it here.
Więc po pierwsze, aby odpowiedzieć na to pytanie, to działa z anonimowych typy:
Dim Countries = From c In List Select New With {Key c.CountryId, c.Country} Distinct.ToList
Dlatego odpowiedź freedompeace za nie do końca pracy.
C# jednak kompilator jest trochę inny.
Gdy napotkany zostanie typ anonimowy i konieczna jest operacja porównania, kompilator C# przesłania wartości Equals i GetHashCode. Zostanie powtórzone we wszystkich publicznych właściwościach anonimowego typu, aby obliczyć kod skrótu obiektu, aby przetestować równość.
And you can read more about that here.
Nadzieja to odpowiedzi na swoje pytanie.
Okazało się to być ciekawe pytanie Chocol8. – Khepri