W C # powiedz, że mam klasę o nazwie Note z trzema zmiennymi składowymi typu String.
public class Note
{
public string Title;
public string Author;
public string Text;
}
I mam listę typu Uwaga:
List<Note> Notes = new List<Note>();
Jaki byłby najczystszy sposób uzyskania listy wszystkich odrębnych wartości w kolumnie Autor?
Mógłbym iterować listę i dodać wszystkie wartości, które nie są duplikatami, do innej listy ciągów, ale wydaje się to brudne i nieefektywne. Mam wrażenie, że istnieje jakaś magiczna konstrukcja Linq, która zrobi to w jednej linii, ale nie byłem w stanie niczego wymyślić.
Default
równość. msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspxWyróżnij klasę Note według autora
źródło
Notes
tak samoNotes.GroupBy()
z liczbą mnogą,s
jakNote
będzie zawierać tylko jedną nutę?Jon Skeet napisał bibliotekę o nazwie morelinq, która ma
DistinctBy()
operatora. Zobacz tutaj implementację. Twój kod będzie wyglądałAktualizacja: Po ponownym przeczytaniu pytania Kirk ma poprawną odpowiedź, jeśli szukasz tylko odrębnego zestawu autorów.
Dodano próbkę, kilka pól w DistinctBy:
źródło
Install-Package morelinq
Korzystając z powyższej logiki, możemy uzyskać unikalne
Course
s.źródło
źródło