如何使用LINQ查询对象以检查对象是否包含数组中的所有元素。
from p in product
where p.keywords.ContainsAll( keyword )
select p
我的意思是containsAll not contains Anyny。这可能吗?
答案 0 :(得分:2)
您可以在Enumerable.All
中使用Where
。在All
中,您使用了array.Contains
。
var productWithAllKeyWords = product
.Where(p => p.keywords.All(pk => keywords.Contains(pk)));
答案 1 :(得分:1)
var containsAll = keyword.Except(p.keywords).Any();
答案 2 :(得分:0)
如果我理解正确,您需要一个功能来检查列表a是列表b的子集。
您可以使用以下功能
public static bool ContainsAll(List<T> a, List<T> b)
{
return !b.Except(a).Any();
}
或
from p in product
where ContainsAll(p.keywords,keyword)
select p
希望这会对你有帮助!