Dalam C #, katakanlah saya memiliki kelas yang disebut Catatan dengan tiga variabel anggota String.
public class Note
{
public string Title;
public string Author;
public string Text;
}
Dan saya memiliki daftar tipe Catatan:
List<Note> Notes = new List<Note>();
Apa cara paling bersih untuk mendapatkan daftar semua nilai berbeda di kolom Penulis?
Saya bisa mengulangi daftar dan menambahkan semua nilai yang tidak duplikat ke daftar string lain, tetapi ini tampak kotor dan tidak efisien. Saya punya perasaan ada beberapa konstruksi Linq ajaib yang akan melakukan ini dalam satu baris, tetapi saya belum dapat menemukan apa pun.
Default
kesetaraan. msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspxBedakan kelas Note oleh Penulis
sumber
Notes
sepertiNotes.GroupBy()
jamaks
karenaNote
hanya akan memegang satu Catatan tunggal?Jon Skeet telah menulis perpustakaan bernama morelinq yang memiliki
DistinctBy()
operator. Lihat di sini untuk implementasinya. Kode Anda akan terlihat sepertiPembaruan: Setelah membaca kembali pertanyaan Anda, Kirk memiliki jawaban yang benar jika Anda hanya mencari satu set Penulis yang berbeda.
Menambahkan sampel, beberapa bidang di DistinctBy:
sumber
Install-Package morelinq
Dengan menggunakan logika di atas, kita bisa mendapatkan unik
Course
.sumber
sumber