Tengo estos dos diccionarios y necesito comparar los valores con la misma clave.

Dict1 = {1, "azul" 2, "amarillo" 3, "rojo"}

Dict2 = {1, "rojo" 2, "amarillo" 3, "rojo"}

Por ejemplo, compare los valores con la clave 1 y devuelva falso. Pero cuando compara los valores de la clave 2 devuelve verdadero.

-1
GelarehNo 22 jun. 2020 a las 18:53

3 respuestas

La mejor respuesta

Quizás puedas probar con esta solución. Aquí revisa las claves dict1, y cuando encuentra una clave similar en dict2, compara los valores de esa clave en cada diccionario.

Dictionary<string, string> dict1 = new Dictionary<string, string>();
Dictionary<string, string> dict2 = new Dictionary<string, string>();

foreach (string k in dict1.Keys){
   if (dict2.ContainsKey(k))
   {
       bool compareValues = (dict1[k] == dict2[k]);
   }
}

Espero que funcione, ¡dinos si tienes otro problema!

0
Delunado 22 jun. 2020 a las 16:35

Una posible solución:

          Dictionary<int, string> d1 = new Dictionary<int, string>
            {
                {1, "blue"},
                {2, "yellow"},
                {3, "red"},
                {4, "black"}
            };

            Dictionary<int, string> d2 = new Dictionary<int, string>()
            {
                {1, "purple"},
                {2, "yellow"},
                {3, "red"},
                {4, "red"}
            };

            var d3 = d2.Where(x => d1[x.Key] == x.Value)
                 .ToDictionary(x => x.Key, x => x.Value);
0
Gargi D. Chakravarty 22 jun. 2020 a las 16:09

Puede usar foreach para recorrer el diccionario y guardar el resultado en un objeto List<bool>.

List<bool> result = new List<bool>();

foreach (string key in d1.Keys)
{
    if (d2.ContainsKey(key))
    {
        result.Add(d1[key] == d2[key]);
    }
}
0
Kyle Wang 23 jun. 2020 a las 02:09