簡體   English   中英

C#Linq列表包含類似的元素

[英]C# Linq List Contains Similar Elements

我正在尋找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" }
            }
        }

    }
}

我想從Cart =>一個CartProduct獲得與CartProduct完全相同的CartProductAttribute標題值,我需要比較。 不多也不少。

EG我需要在myCart中找到一個類似的CartProduct,其CartProductAttribute標題為title =“red”,cartProductAttribute標題為title =“small”(例如示例中為'cartProduct1')

CartProduct cartProductToCompare = new CartProduct
{
    List<CartProductAttribute> cartProductToCompareAttributes = new List<CartProductAttribute>
    {
        CartProductAttribute cpa5 = new CartProductAttribute{ title="red" },
        CartProductAttribute cpa6 = new CartProductAttribute{ title="small" }
    }
}

所以從對象圖

  • 我的車
    • cartProduct1
      • cpa1(標題=紅色)
      • cpa2(標題=小)
    • cartProduct2
      • cpa3(title = john)
      • cpa4(title = mary)

Linq查詢尋找

  • cartProductToCompare
    • cpa5(標題=紅色)
    • cpa6(標題=小)

應該找到

  • cartProduct1

希望這一切都有道理......

謝謝

我想這就是你所追求的。

var attributes = new [] { "red", "small" };
var result = myCart.Products.Where(product => 
    product.Attributes.All(attribute => 
        attributes.Contains(attribute.title)
    )
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM