使用linq从列表数据中选择

use*_*193 3 .net c# linq

一个BookTag对象列表.使用linq我想选择任何标签名称包含指定过滤器的书籍列表.

string genre; // filter
List<Book> books = repository.GetBooks();

foreach(Book book in books.Where(x=>x.Tags.Any())) //I'm stuck here
Run Code Online (Sandbox Code Playgroud)

Ily*_*nov 6

你需要看看是否有任何标签名称等于过滤器:

books.Where(book => book.Tags.Any(tag => tag == genre))
Run Code Online (Sandbox Code Playgroud)

或使用包含方法:

books.Where(book => book.Tags.Contains(genre))
Run Code Online (Sandbox Code Playgroud)

假设Tags属性返回一个序列string.如果Tag是用户定义的对象,请使用:

books.Where(book => book.Tags.Any(tag => tag.Name == genre))
Run Code Online (Sandbox Code Playgroud)