Поиск, если свойство внутри списка внутри списка не содержит заданную строку c - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть огромная база данных о продуктах, с которыми я работаю, набросал API

API возвращает продукт, для которого у продуктов есть метаданные, например minQuantities Maxes ect

Теперь я заметил, что некоторые продукты не имеют "var_maximum_allowed_quantity" или "Maximum_allowed_quantity"

Таким образом, для каждого продукта, который я должен выглядеть, мета-данные That Products должны выглядеть примерно так:

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

    }

 }

Проблема в том, что у meta_data есть Id и значения ключа, которые мне нужны. проверить каждый ключ внутри каждого meta_data внутри каждого продукта, если это имеет смысл? Я разрушаю мой мозг, Кто-нибудь знает, как я могу проверить все это, чтобы увидеть, если эти 2 строки отсутствуют? Мне нужно быть в состоянии сделать что-то вроде

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) 


public class MetaData
{
    private object preValue;

    [DataMember (EmitDefaultValue = false)]
    public int? id {
        get;
        set;
    }

    [DataMember (EmitDefaultValue = false)]
    public string key {
        get;
        set;
    }

    [DataMember (EmitDefaultValue = false)]
    public object value {
        get;
        set;
    }

Ответы [ 3 ]

1 голос
/ 20 февраля 2020
foreach (var item in VarProduct)
{
    hasQuantity = false;
    foreach (var metaItem in item.meta_data)
    {
        if (metaItem.id == "variation_maximum_allowed_quantity" || metaItem.id == "maximum_allowed_quantity") {
            hasQuantity = true;
            break;
        }
    }
    if (!hasQuantity) {
        item.stockQuantity = int.MaxValue;
    }
}
0 голосов
/ 20 февраля 2020

Вы можете использовать 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;
    }
}
0 голосов
/ 20 февраля 2020

Будет ли это решение, которое вы ищете?

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...