visual valor tipos tipo tablas studio referencia por para datos c# .net key-value

c# - tipos - Encontrar un valor ya existente en el par de valores clave



tipos de datos por valor y referencia (5)

¿Sus necesidades describen exactamente el diseño de Dictionary s?

Dictionary<string, string> openWith = new Dictionary<string, string>(); // Add some elements to the dictionary. There are no // duplicate keys, but some of the values are duplicates. openWith.Add("txt", "notepad.exe"); // If a key does not exist, setting the indexer for that key // adds a new key/value pair. openWith["doc"] = "winword.exe";

Estoy almacenando una cadena y un valor int en el par de valores clave.

var list = new List<KeyValuePair<string, int>>();

Al agregar, necesito verificar si la cadena (Clave) ya existe en la lista, si existe, necesito agregarla a Valor en lugar de agregar una nueva clave.
¿Cómo comprobar y añadir?


En lugar de Lista, puede usar el Dictionary y verificar si contiene la clave y luego agregar el nuevo valor a la clave existente

int newValue = 10; Dictionary<string, int> dictionary = new Dictionary<string, int>(); if (dictionary.ContainsKey("key")) dictionary["key"] = dictionary["key"] + newValue;


Por supuesto, el diccionario es preferible en su caso. No puede modificar el valor de la KeyValue<string,int> ya que es inmutable.

Pero incluso si aún desea utilizar List<KeyValuePair<string, int>>(); . Puede usar IEqualityComparer<KeyValuePair<string, int>> . El código será como

public class KeyComparer : IEqualityComparer<KeyValuePair<string, int>> { public bool Equals(KeyValuePair<string, int> x, KeyValuePair<string, int> y) { return x.Key.Equals(y.Key); } public int GetHashCode(KeyValuePair<string, int> obj) { return obj.Key.GetHashCode(); } }

Y usalo en Contiene como

var list = new List<KeyValuePair<string, int>>(); string checkKey = "my string"; if (list.Contains(new KeyValuePair<string, int>(checkKey, int.MinValue), new KeyComparer())) { KeyValuePair<string, int> item = list.Find((lItem) => lItem.Key.Equals(checkKey)); list.Remove(item); list.Add(new KeyValuePair<string, int>("checkKey", int.MinValue));// add new value }

Lo que no suena bien.

Espero que esta información ayude ..


Si necesita usar la lista, debe buscar cada una de las listas y buscar las claves. Simplemente, puedes usar la tabla hash.


usar dictonary Diccionario en C # y te sugiero que leas este post Dictonary en .net

Dictionary<string, int> dictionary = new Dictionary<string, int>(); dictionary.Add("cat", 2); dictionary.Add("dog", 1); dictionary.Add("llama", 0); dictionary.Add("iguana", -1);

verificar. utilizar ContainsKey ContainsKey

if (dictionary.ContainsKey("key"))     dictionary["key"] = dictionary["key"] + yourValue;