我正在寻找linq查询以查看是否存在类似的对象
我有一个对象图如下
Cart myCart = new Cart
{
List<CartProduct> myCartProduct = new List<CartProduct>
{
CartProduct cartProduct1 = new CartProduct
{
List<CartProductAttribute> a = new List<CartProductAttribute>
{
CartProductAttribute cpa1 = new CartProductAttribute{ title="red" },
CartProductAttribute cpa2 = new CartProductAttribute{ title="small" }
}
}
CartProduct cartProduct2 = new CartProduct
{
List<CartProductAttribute> d = new List<CartProductAttribute>
{
CartProductAttribute cpa3 = new CartProductAttribute{ title="john" },
CartProductAttribute cpa4 = new CartProductAttribute{ title="mary" }
}
}
}
}
我想从购物车获取=&gt; CartProduct具有与我需要比较的CartProduct完全相同的CartProductAttribute标题值。 不多也不少。
E.G。我需要找到一个类似的CartProduct,它有一个带有title =“red”的CartProductAttribute和一个myCart中带有title =“small”的cartProductAttribute(例如示例中的'cartProduct1')
CartProduct cartProductToCompare = new CartProduct
{
List<CartProductAttribute> cartProductToCompareAttributes = new List<CartProductAttribute>
{
CartProductAttribute cpa5 = new CartProductAttribute{ title="red" },
CartProductAttribute cpa6 = new CartProductAttribute{ title="small" }
}
}
所以从对象图
Linq查询
应该找到
希望这一切都有意义......
由于
答案 0 :(得分:5)
我认为这就是你所追求的目标。
var attributes = new [] { "red", "small" };
var result = myCart.Products.Where(product =>
product.Attributes.All(attribute =>
attributes.Contains(attribute.title)
)
);