我有一个书籍清单,每本书都有一个作者分配给它。
我要做的是允许用户根据作者过滤结果。
所以有些书可能有相同的作者等,但我想过滤掉作者只在我的下拉列表中显示和输入每一本书。
这就是我目前所拥有的:
var bookAuthors = Cache.CacheExtension.GetFromCache<List<BookCollection>>("books"); // Returns me the collection of books
// Filter the Authors out of the books
var authorCollection = bookAuthors.DistinctBy(item => new Options { Id = item.BookAuthor.ToString(), Description = item.BookAuthor }).ToList(); // Doesn't remove duplicates
正如您所看到的,我正在使用DistinctBy,但没有任何内容被过滤。
如果我这样做
var authorCollection = bookAuthors.Select(item => new Options { Id = item.BookAuthor.ToString(), Description = item.BookAuthor }).ToList(); // I get a list of Authors.
我得到了列表,但它包含重复项,任何帮助都是盛大的
答案 0 :(得分:1)
在Linq中使用GroupBy()
var distinctItems = authorCollection.GroupBy(x => x.Id).Select(y => y.First());