Próbuję użyć Linq, aby zwrócić listę identyfikatorów, biorąc pod uwagę listę obiektów, w których identyfikator jest właściwością. Chciałbym móc to zrobić bez przeglądania każdego obiektu i wyciągania unikalnych identyfikatorów, które znajdę.
Mam listę obiektów typu MyClass, a jedną z właściwości tej klasy jest identyfikator.
public class MyClass
{
public int ID { get; set; }
}
Chcę tylko napisać zapytanie Linq, aby zwrócić mi listę tych identyfikatorów
Jak to zrobić, mając IList<MyClass>
taki, że zwraca jeden IEnumerable<int>
z identyfikatorów?
Jestem pewien, że musi istnieć możliwość zrobienia tego w jednym lub dwóch wierszach za pomocą Linq, zamiast przechodzenia przez każdy element na liście MyClass i dodawania unikalnych wartości do listy.
Każda pomoc w stworzeniu eleganckiego rozwiązania byłaby bardzo mile widziana!
DistinctBy
w MoreLinq, który da ci różne opcjeMyClass
na podstawieID
. Sposób użycia:var distincts = list.DistinctBy(x => x.ID);
Odpowiedzi:
źródło
Użyj operatora Distinct :
źródło
Używając prostego Linq , z
Distinct()
rozszerzeniem:źródło
WYNIK
1234567890
źródło
Biorąc Distinct, musimy również rzutować do IEnumerable. Jeśli lista jest wartością modelową, musisz napisać taki kod
źródło