我正在从事图书经理项目。
假设我有这样的Book类:
public class Book {
public string Name;
public List<string> Tags;
}
我还有一个Book of Book和一些复选框具有相同的标签值,供用户选择用于过滤Book of Book的标签。
我想要的是按用户选择的标签过滤Book of Book,并将结果放入新列表。
示例:
Book1有{A,B,C}标签,Book2有{A,B,D}标签,Book3有{D,E,F}标签。因此,如果用户选择A和B标签进行过滤,则新列表将包含Book1和Book2。或者如果他们选择D标签进行过滤,新列表将包含Book3。
答案 0 :(得分:1)
尝试使用Linq:
List<Book> Books = yourList;
Books = Books.Where(a=>a.Tags.Where(z=>z.Intersect(userList).Any()).ToList()
您已使用Intersect查找列表中的项目,而不是包含另一项目中的任何项目。
从评论中可以看出,你对Linq,&#34; a&#34;和&#34; z&#34;是lamda表达式,您可以将其视为foreach循环:
Books.Where(a=>a.Tags == "a")
相当于:
foreach(Book item in Books)
{
if(item.Tags == "a")
{
//Add item to your result;
}
}