LINQ - 数组属性包含另一个数组的元素

Rob*_*Rob 12 .net linq arrays filter

我有一个对象(产品),其属性类型为'array',
例如product.tags = {"tag1","tag2","tag9"}

我有一个输入标签数组来过滤.

......但这不太合适:

List<string> filterTags = new List<string>() { "tag1", "tag3" };

var matches = from p in products
  where p.Tags.Contains(filterTags)
  select p;
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢.

Ahm*_*eed 28

什么是Contains真正的意思来实现?是否Tags需要存在所有项目filterTags?或者至少其中一个?对于后者使用Any和前者使用All.您的where行将更改为:

where p.Tags.Any(tag => filterTags.Contains(tag))
Run Code Online (Sandbox Code Playgroud)

要么

where p.Tags.All(tag => filterTags.Contains(tag))
Run Code Online (Sandbox Code Playgroud)

  • @Mike _As LINQ_?LINQ的答案中不是给出了什么吗?当然是这样。您所展示的称为扩展方法语法 BTW。 (2认同)