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

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

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

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

var matches = from p in products
  where p.Tags.Contains(filterTags)
  select p;

有什么建议吗?谢谢.

rhfm7lfc

rhfm7lfc1#

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

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

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

l2osamch2#

var small = new List<int> { 1, 2 };
var big = new List<int> { 1, 2, 3, 4 };

bool smallIsInBig = small.All(x => big.Contains(x));
// true

bool bigIsInSmall = big.All(x => small.Contains(x));
// false

bool anyBigIsInSmall = big.Any(x => small.Contains(x));
// true

相关问题