C# 查找列表中的列表中的属性是否不包含特定字符串
我有一个巨大的产品数据库,我正在使用一个api API返回一个产品,这些产品具有类似于MinQuantilities Maxes等的元数据 现在我注意到有些产品没有“变化量\最大允许数量”或“最大允许数量” 所以对于每一个产品,我都要看看这些产品的元数据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和值,我需要检查每个产品
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;
}
}