сравнение значений из двух списков

Если у меня есть название товара и 2 списка с названием товаров и каким-то числом(в виде bmw=5). Как можно имея название товара найти в списке данные и сравнить их между собой? По идеи сплитом по = разделить значения 2 списков и перебором через for сравнить каждый, но что-то не получается

foreach(var zero in zeroList)
{
    string[] zero_tokens = zero.Split(new[] { "=" }, StringSplitOptions.None);
    
    for(int i = 0; i<openList_new.Count;i++)
    {
        if (openList_new[i].Contains(zero_tokens[0]));
        {
            for(int j = 0; j<oldList.Count;j++)
            {
                if (oldList[j].Contains(zero_tokens[0]));
                {
                    string[] open_tokens_str = openList_new[i].Split(new[] { "=" }, StringSplitOptions.None);
                    string[] old_tokens_str = oldList[j].Split(new[] { "=" }, StringSplitOptions.None);
                    float open_tokens = float.Parse(open_tokens_str[1]);
                    float old_tokens = float.Parse(old_tokens_str[1]);
                    if(open_tokens != old_tokens)
                    {
                        //действие;
                    }
                }
            }
            
        }
    }
}

Ответы (1 шт):

Автор решения: KuzCode

Гораздо лучше сразу подготовить данные, преобразовав их в словари:

var oldData = new List<string>() // старые данные 
{
    "bmv=5",
    "volkswagen=12",
    "mazda=4",
    "trash=1"
};

var newData = new List<string>() // новые данные
{
    "bmv=8",
    "mazda=3",
    "rower=1"
};

var oldDataDictionary = oldData
    .Select(data => data.Split(new[] { '=' })) // каждую строку разбиваем
    .Select(data => new KeyValuePair<string, float>(data[0], float.Parse(data[1]))) // преобразуем в пары
    .ToDictionary(data => data.Key, data => data.Value); // преобразуем в словарь

var newDataDictionary = newData
    .Select(data => data.Split(new[] { '=' })) // каждую строку разбиваем
    .Select(data => new KeyValuePair<string, float>(data[0], float.Parse(data[1]))) // преобразуем в пары
    .ToDictionary(data => data.Key, data => data.Value); // преобразуем в словарь

foreach (var newDataItem in newDataDictionary)
{
    var productName = newDataItem.Key; // название продукта
    var newProductValue = newDataItem.Value; // новое значение

    if (oldDataDictionary.ContainsKey(productName))
    {
        var oldProductValue = oldDataDictionary[productName]; // старое значение

        // какой-то код (для примера вывод в консоль)
        Console.WriteLine("[Product]: " + productName);
        Console.WriteLine("Old value: " + oldProductValue);
        Console.WriteLine("New value: " + newProductValue);
        Console.WriteLine();
    }
}

Преобразование массива строк в словарь желатеьлно вынести в отдельную функцию-расширение public static IDicionary<string, float> ConvertToDictionary(this IEnumerable<string>), для простоты примера оставлю так.

Вывод в консоль:

[Product]: bmv
Old value: 5
New value: 8

[Product]: mazda
Old value: 4
New value: 3
→ Ссылка