我有一个对象(产品),具有类型为'数组'的属性例如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;
List<string> filterTags = new List<string>() { "tag1", "tag3" };
var matches = from p in products
where p.Tags.Contains(filterTags)
select p;
有什么建议吗?谢谢.
rhfm7lfc1#
Contains真正的目的是什么?Tags中的所有项目都需要存在于filterTags中吗?或者至少其中一个?对于后者使用Any,对于前者使用All。您的where行将更改为:
Contains
Tags
filterTags
Any
All
where
where p.Tags.Any(tag => filterTags.Contains(tag))
或
where p.Tags.All(tag => filterTags.Contains(tag))
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));// truebool bigIsInSmall = big.All(x => small.Contains(x));// falsebool anyBigIsInSmall = big.Any(x => small.Contains(x));// true
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));
2条答案
按热度按时间rhfm7lfc1#
Contains
真正的目的是什么?Tags
中的所有项目都需要存在于filterTags
中吗?或者至少其中一个?对于后者使用Any
,对于前者使用All
。您的where
行将更改为:或
l2osamch2#