C# 查找列表中的列表中的属性是否不包含特定字符串

C# 查找列表中的列表中的属性是否不包含特定字符串,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我有一个巨大的产品数据库,我正在使用一个api API返回一个产品,这些产品具有类似于MinQuantilities Maxes等的元数据 现在我注意到有些产品没有“变化量\最大允许数量”或“最大允许数量” 所以对于每一个产品,我都要看看这些产品的元数据 foreach (var item in VarProduct) { foreach (var metaItem in item.meta_data) { } } 问题是元数据有密钥Id和值,我需要检查每个产品

我有一个巨大的产品数据库,我正在使用一个api

API返回一个产品,这些产品具有类似于MinQuantilities Maxes等的元数据

现在我注意到有些产品没有“变化量\最大允许数量”或“最大允许数量”

所以对于每一个产品,我都要看看这些产品的元数据

 foreach (var item in VarProduct)
 {
   foreach (var metaItem in item.meta_data)
    {

    }

 }
问题是元数据有密钥Id和值,我需要检查每个产品中每个元数据的每个密钥,如果这样做有意义的话?我正在破坏我的大脑自动取款机,有人知道我怎么能对照所有这些来检查这两个字符串是否丢失了吗?我需要能够做一些类似的事情

if(mdDoesntcontain)
{ 
 //This means stock is Unlimiteed so need to set a value for stock
   item.stockquantity = 9999999; (or int.maxValue())
}

将此作为块发布有点棘手,但是:


-item.meta_data count = w.e
 -[0]
   -base
     -id = 101231
     -key = "min_max_rules"
     -value = "no"

 -[1]
   -base
     -id = 123131
     -key = "variation_minimum_allowed_quantity"
     -value = ""(this means 1 usually) 



这就是你想要的解决方案吗

foreach (var item in VarProduct)
{
    var hasQuantity = false;
    foreach (var metaItem in item.meta_data)
    {
        if (metaItem.key == "variation_maximum_allowed_quantity" || metaItem.key == "maximum_allowed_quantity") {
            item.stockQuantity = metaItem.value == "" ? 1 : int.Parse(metaItem.value);
            hasQuantity = true;
            break;
        }
    }
    if(!hasQuantity) {
        item.stockQuantity = int.MaxValue;
    }
}

您可以在任何操作中使用linq:

foreach (var item in VarProduct) 
{
    if (!item.meta_data.Any(m => m.key.Equals("variation_maximum_allowed_quantity") 
        || m.key.Equals("maximum_allowed_quantity")))
    {
        item.stockQuantity = int.MaxValue;
    }
}

我们不知道你的
元数据是什么样子的,那么我们该如何帮助你呢?我刚刚意识到将在2秒钟内发布一个代码块应用程序构建不要将代码作为图像发布-一些产品没有“最大允许数量的变化”-你的意思是说有时没有这样的属性,或者它是空的吗?究竟为什么
等于
?这意味着通常是1?如果它的意思是1,为什么不是1?对我来说似乎是个糟糕的API。
foreach (var item in VarProduct)
{
    var hasQuantity = false;
    foreach (var metaItem in item.meta_data)
    {
        if (metaItem.key == "variation_maximum_allowed_quantity" || metaItem.key == "maximum_allowed_quantity") {
            item.stockQuantity = metaItem.value == "" ? 1 : int.Parse(metaItem.value);
            hasQuantity = true;
            break;
        }
    }
    if(!hasQuantity) {
        item.stockQuantity = int.MaxValue;
    }
}
foreach (var item in VarProduct) 
{
    if (!item.meta_data.Any(m => m.key.Equals("variation_maximum_allowed_quantity") 
        || m.key.Equals("maximum_allowed_quantity")))
    {
        item.stockQuantity = int.MaxValue;
    }
}