好吧,所以这很难解释,但我会尽力的。
我有一个装满书籍的清单。 所有书籍都有标题、发布年份和作者等变量。 但他们也有流派,这就是让我有点困惑的地方。 因为每本书都可以有多个类型,所以我将类型单独列出。 所以每本书的结构都是这样的。
Title = "Hello World",
publishYear = 2001,
Genres = ["Horror", "Drama"],
现在,我想使用 LINQ 在特定类型之后进行过滤,因此,如果用户想要在“恐怖”之后进行过滤,那么只会显示那些内容。 但由于它们在自己的列表中,所以我遇到了一些小问题。 据我所知。 这是我所涉及的代码片段的快速重现。
List<Book> allBooks = new List<Book>();
allBooks.Add(new Book("Hello World", "Tom Burt", 2009, ["Horror", "Romance"] ));
allBooks.Add(new Book("Hello World 2", "Robert Burt", 2004, ["Comedy", "Romance"] ));
var genreBooks = allBooks.Where(x => x.Genres.All(y => y == "Horror")).ToList();
genreBooks.ForEach(book => Console.WriteLine(book.Title));
//预期结果
世界你好
//实际结果
编辑: 只需将 All 更改为 Any 即可解决! 谢谢你的帮助:)
只需将 All 更改为 Any 即可解决! 谢谢您的帮助!
var genreBooks = allBooks.Where(x => x.Genres.All(y => y == "Horror")).ToList();
成为
var genreBooks = allBooks.Where(x => x.Genres.Any(y => y == "Horror")).ToList();