Dapatkan daftar nilai yang berbeda dalam Daftar

Dalam C#, mengatakan saya memiliki kelas yang disebut dengan Catatan tiga String variabel anggota.

public class Note
{
    public string Title;
    public string Author;
    public string Text;
}

Dan saya memiliki daftar jenis Catatan:

List<Note> Notes = new List<Note>();

Apa yang akan menjadi yang terbersih cara untuk mendapatkan daftar dari semua nilai-nilai yang berbeda dalam Penulis kolom?

Aku bisa iterate melalui daftar dan menambahkan semua nilai-nilai yang tidak't duplikat ke daftar lain dari string, tapi ini tampaknya kotor dan tidak efisien. Aku punya perasaan ada's ajaib Linq konstruksi yang'll melakukan hal ini dalam satu baris, tapi saya belum't mampu untuk datang dengan sesuatu.

Larutan
Notes.Select(x => x.Author).Distinct();

Ini akan kembali urutan (IEnumerable<string>) dari Penulis nilai-satu per nilai yang unik.

Komentar (4)

Berbeda Catatan kelas oleh Penulis

var DistinctItems = Note.GroupBy(x => x.Author).Select(y => y.First());

foreach(var item in DistinctItems)
{
    //Add to other List
}
Komentar (0)

Jon Skeet telah menulis sebuah perpustakaan yang disebut morelinq yang memiliki DistinctBy() operator. Lihat di sini untuk pelaksanaan. Kode anda akan terlihat seperti

IEnumerable distinctNotes = Notes.DistinctBy(note => note.Author);

Update: Setelah kembali membaca pertanyaan anda, Kirk memiliki jawaban yang benar jika anda're hanya mencari set yang berbeda dari Penulis.

Menambahkan sampel, beberapa bidang di DistinctBy:

res = res.DistinctBy(i => i.Name).DistinctBy(i => i.ProductId).ToList();
Komentar (2)
public class KeyNote
{
    public long KeyNoteId { get; set; }
    public long CourseId { get; set; }
    public string CourseName { get; set; }
    public string Note { get; set; }
    public DateTime CreatedDate { get; set; }
}

public List KeyNotes { get; set; }
public List GetCourses { get; set; }    

List courses = KeyNotes.Select(x => new RefCourse { CourseId = x.CourseId, Name = x.CourseName }).Distinct().ToList();

Dengan menggunakan logika di atas, kita bisa mendapatkan unik `Saja.

Komentar (1)
mcilist = (from mci in mcilist select mci).Distinct().ToList();
Komentar (2)