首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Linq列表包含类似的元素

C# Linq列表包含类似的元素
EN

Stack Overflow用户
提问于 2010-04-17 00:49:47
回答 1查看 2.4K关注 0票数 4

我正在查找linq查询,以查看是否存在类似的对象。

我有一个对象图,如下所示

代码语言:javascript
复制
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" }
            }
        }

    }
}

我想从Cart =>获得一个CartProduct,它的CartProductAttribute标题值与需要比较的CartProduct完全相同。不多也不少。

例如,我需要找到一个类似的CartProduct,它在myCart中有一个带有title=“红色”的CartProductAttribute和一个带有title="small“的cartProductAttribute (例如示例中的'cartProduct1‘)。

代码语言:javascript
复制
CartProduct cartProductToCompare = new CartProduct
{
    List<CartProductAttribute> cartProductToCompareAttributes = new List<CartProductAttribute>
    {
        CartProductAttribute cpa5 = new CartProductAttribute{ title="red" },
        CartProductAttribute cpa6 = new CartProductAttribute{ title="small" }
    }
}

所以从对象图来看

(title=red)

  • cpa2 (title=small)

  • myCart
    • cartProduct1
      • cpa1 cpa1

代码语言:javascript
复制
- cartProduct2  
    - cpa3 (title=john)
    - cpa4 (title=mary)

Linq查询查找

  • cartProductToCompare
    • cpa5 (title=red)
    • cpa6 (title=small)

应该找到

  • cartProduct1

希望这一切都有意义..。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-17 01:03:24

我想这就是你想要的。

代码语言:javascript
复制
var attributes = new [] { "red", "small" };
var result = myCart.Products.Where(product => 
    product.Attributes.All(attribute => 
        attributes.Contains(attribute.title)
    )
);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2656795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档