linq如何选择具有包含一个或多个值的数组(或列表)的子集合的父级

这似乎很容易

var orx = gg.Where(x=>x.ProductAttributes.Any (pa =>pa.AttributeId == "home")); 

当产品属性的值为“home”时返回gg

我需要它返回where和gg具有数组的产品属性值,即

 var orx = gg.Where(x=>x.ProductAttributes.Any (pa =>pa.AttributeId in "home,work")); 

关于什么…

 string[] values = new string[] { "home", "work" }; var orx = gg.Where(x => x.ProductAttributes.Any(pa => values.Contains(pa.AttributeId)); 

甚至"home,work".Contains(pa.AttributeId) 。如果您的列表与您的示例一样可靠,则"home,work".Contains(pa.AttributeId)应该有效。 (除非你能确保AttributeId不是任何列表单词的子串,例如“我”,否则我不推荐这个。

使用Enumerable.Contains() :

 var orx = gg.Where(x => x.ProductAttributes .Any(pa => array.Containspa(pa.AttributeId)); var orx = gg.Where(x => x.ProductAttributes .Any(pa => "home, work".Split(',').Contains(pa.AttributeId));