使用Linq

时间:2015-05-10 06:53:52

标签: c# linq

我有一个书籍清单,每本书都有一个作者分配给它。

我要做的是允许用户根据作者过滤结果。

所以有些书可能有相同的作者等,但我想过滤掉作者只在我的下拉列表中显示和输入每一本书。

这就是我目前所拥有的:

  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.

我得到了列表,但它包含重复项,任何帮助都是盛大的

1 个答案:

答案 0 :(得分:1)

在Linq中使用GroupBy()

var distinctItems = authorCollection.GroupBy(x => x.Id).Select(y => y.First());