【发布时间】:2011-10-25 15:26:09
【问题描述】:
当集合应该包含数组中的所有值时,如何过滤
var andAttributes = "super-quiet,electric-start".Split(',');
var andx = gg.Where(x => x.ProductAttributes.All(pa => andAttributes.Contains(pa.AttributeId)));
上面的方法似乎可行,但似乎没有。
对于给定的示例,productAttributes 是一个通用列表,可能包含 1 个或多个特定值。
在英语中,我只想选择productAttributes 集合中同时包含超静音和电启动值的对象。
此表达式的作用类似于 OR 语句
var orx = gg.Where(x => x.ProductAttributes.Any(pa => orAttributes.Contains(pa.AttributeId)));
【问题讨论】:
-
ProductAttributes 包含什么?在什么情况下它不能获取正确的结果?一般来说,All 似乎是您想要的方法,但如果不了解您的数据的更多信息,则很难进一步提供帮助。
标签: c# linq collections linq-to-objects