对于此示例:
Get a list of distinct values in List
这演示了如何基于一项获得不同的列表。
您如何获得两件事的独特清单。说作者和标题。
public class Note
{
public string Title;
public string Author;
public string Text;
}
List<Note> Notes = new List<Note>();
一个答案是:
Notes.Select(x => x.Author).Distinct();
答案 0 :(得分:1)
正如jdweng在评论中建议的,您可以执行以下操作:
Notes.Select(x => new string[] {x.Title, x.Author}).Distinct();
这将返回一个IEnumerable<string[]>
。
另一个选择是创建一个要选择的类:
public class NoteSummary()
{
public string Title { get; set; }
public string Author { get; set; }
public NoteSummary(string title, string author)
{
Title = title;
Author = author;
}
}
然后linq变为:
Notes.Select(x => new NoteSummary(x.Title, x.Author)).Distinct();
返回IEnumerable<NoteSummary>
。
如果您要返回原始Note
类/实体的分组集合,则可以使用GroupBy
:
Notes
.GroupBy(g => new { g.Title, g.Author }) // group by fields
.Select(g => g.First()); // select first group
返回IEnumerable<Note>
。