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

jtw3ybtb  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(83)

我有一个对象(产品),具有类型为'数组'的属性
例如product.tags = {“tag 1”,“tag 2”,“tag 9”}
我有一个要过滤的输入标记数组。
但这并不完全奏效:

  1. List<string> filterTags = new List<string>() { "tag1", "tag3" };
  2. var matches = from p in products
  3. where p.Tags.Contains(filterTags)
  4. select p;

有什么建议吗?谢谢.

rhfm7lfc

rhfm7lfc1#

Contains真正的目的是什么?Tags中的所有项目都需要存在于filterTags中吗?或者至少其中一个?对于后者使用Any,对于前者使用All。您的where行将更改为:

  1. where p.Tags.Any(tag => filterTags.Contains(tag))

  1. where p.Tags.All(tag => filterTags.Contains(tag))
l2osamch

l2osamch2#

  1. var small = new List<int> { 1, 2 };
  2. var big = new List<int> { 1, 2, 3, 4 };
  3. bool smallIsInBig = small.All(x => big.Contains(x));
  4. // true
  5. bool bigIsInSmall = big.All(x => small.Contains(x));
  6. // false
  7. bool anyBigIsInSmall = big.Any(x => small.Contains(x));
  8. // true

相关问题