HamzaMcBob Ответов: 2

Как я могу сравнивать строки инт словарей


Итак ,у меня есть 2 строковых, int-словаря с именами statsB и statsC.
Я хочу проверить, содержится ли строка из StatsB в statsC, и если да, то сравнить коррелирующее целое число обоих.
Я понятия не имею с чего начать

Что я уже пробовал:

foreach (var item in statsB)
          {
              if (statsC.ContainsKey(item))
              {


              }

          }


пробовал что-то вроде этого, но искренне не знаю, с чего начать

2 Ответов

Рейтинг:
1

phil.o

foreach (string item in statsB.Keys)
{
   if (statsC.ContainsKey(item))
   {
      if (statsB[item] == statsC[item])
      {
         // values match
      }
      else
      {
         // values don't match
      }
   }
}

или
foreach (var item in statsB)
{
   string key = item.Key;
   if (statsC.ContainsKey(key))
   {
      if (statsB[key] == statsC[key])
      {
         // values match
      }
      else
      {
         // values don't match
      }
   }
}

Вы всегда должны обращаться к документации, когда не знаете, как использовать объект (предполагая, что указанный объект документирован).
Словарь<TKey,TValue> класс[^]
KeyValuePair<TKey,TValue> Struct[^] (тип item во втором решении)
Это также объясняет, почему, используя var ибо все это не помогает новичкам четко понимать код, который они пишут.


Рейтинг:
0

RickZeeland

Смотрите пример здесь: https://www.dotnetperls.com/dictionary-equals[^]

А вот еще один способ: Сравните два словаря с помощью LINQ[^]