linq where子句使用containsAll

时间:2013-11-18 16:01:38

标签: c# linq

如何使用LINQ查询对象以检查对象是否包含数组中的所有元素。

from p in product
where p.keywords.ContainsAll( keyword )
select p

我的意思是containsAll not contains Anyny。这可能吗?

3 个答案:

答案 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

希望这会对你有帮助!