Tengo el siguiente código:

var tuple = new Tuple<string, string>("MyKey", "MyValue");
var list = new List<string>();
var str = tuple.ToString();
list.Add(str);
// str has the value "(MyKey, MyValue)"

Tengo un objeto predefinido donde necesito usar una lista de cadenas.
Decidí usar una Tupla, pero no estoy seguro de cómo puedo devolver el valor str a una Tupla.

¿Cómo puedo almacenar un valor clave en una Lista para poder usar lambda para consultarlo, p. por la llave?

c#
-2
doorman 17 ene. 2018 a las 13:56

3 respuestas

La mejor respuesta

Todo este código:

var tuple = new Tuple<string, string>("MyKey", "MyValue");
var list = new List<string>();
var str = tuple.ToString();
list.Add(str);
// str has the value "(MyKey, MyValue)"

Podría ser reemplazado por un diccionario:

Dictionary<string, string> values = new Dictionary<string, string>();
values.Add("MyKey", "MyValue");

Luego, puede usar linq para consultar el diccionario si desea hacerlo:

value = values.Where(x => x.ContainsKey("MyKey"));

Puede obtener una lista con todas las claves de la siguiente manera:

List<string> keys = values.Keys;

Así que no es necesario tener una lista separada para eso.

Si desea una lista de cadenas con dos valores separados por un coma, el diccionario también lo hará:

List<string> keysValues = (from item in values
                                               select item.Key + "," + item.Value).ToList();
2
Isma 17 ene. 2018 a las 16:48

Usa un diccionario.

var dictionary = new Dictionary<string, string>();
        dictionary.Add("myKey", "myVal");

        if (dictionary.ContainsKey("myKey"))
            dictionary["myKey"] = "myVal1";
1
Sriman Saswat Suvankar 17 ene. 2018 a las 11:05

Le sugiero que use un Diccionario. Pero si realmente necesitas hacerlo de esta manera:

Para transformar de string a Tuple (suponiendo que la clave en sí misma nunca contendrá una coma + espacio):

        var tuple = Tuple.Create("MyKey", "MyValue");
        var list = new List<string>();
        var str = tuple.ToString();
        list.Add(str);
        // str has the value "(MyKey, MyValue)"
        Console.WriteLine(str);

        int comma = str.IndexOf(", ");
        string key = str.Substring(1,comma-1);
        string valuee = str.Substring(comma+2,str.Length-key.Length-4);
        var tuple2 = Tuple.Create(key, valuee);
        // 'tuple2' is now equal to the orignal 'tuple'
-1
GregaMohorko 17 ene. 2018 a las 11:44