2011-02-13 11 views
12

Soy nuevo en C#, y por lo tanto estoy buscando términos comunes para esto. En esencia, lo que me gustaría hacer es convertir:C# divide, devuelve pares clave/valor en una matriz

key1 = val1 | clave2 = VAL2 | ... | Keyn = Valn

en una matriz de base de datos donde, lo has adivinado, key1 retornos, devoluciones VAL1 Key2 val2, etc. Sé que podría devolver una cadena usando división, pero a partir de ese momento, estoy perdido. ¡Cualquier ayuda sería muy apreciada! Espero haber aclarado mis intenciones, pero si tiene alguna pregunta, ¡no dude en preguntar!

+1

@Mark Byers: supongo que quiso decir "conjunto asociativo" como un diccionario. – jason

Respuesta

50
string s = "key1=val1|key2=val2|keyN=valN"; 
var dict = s.Split('|') 
      .Select(x => x.Split('=')) 
      .ToDictionary(x => x[0], x => x[1]); 

Ahora dict es una Dictionary<string, string> con los pares clave/valor deseado.

+1

Esto me ayuda muchísimo. Como dije, soy nuevo en C# y estoy trabajando en mi primer programa como complemento (más o menos) de un programa que ya uso. ¡Gracias! – Josh

+0

ese es un uso increíble de cierres, ¡lindo! – matao

+0

¡Esta es una que usaré con seguridad! ¡Bien hecho! – Andreas

8
Dictionary<string,string> results = new Dictionary<string,string>(); 
foreach(string kvp in source.split('|')) 
{ 
    results.Add(kvp.split('=')[0], kvp.split('=')[1]); 
} 

probablemente una manera de hacerlo LINQ.

3
string s = "key1=val1|key2=val2|keyN=valN"; 
var dict = s.Split('|') 
.Select(x => x.Split('=')) 
.Where(x => x.Length > 1 && !String.IsNullOrEmpty(x[0].Trim()) 
    && !String.IsNullOrEmpty(x[1].Trim())) 
.ToDictionary(x => x[0].Trim(), x => x[1].Trim()); 
Cuestiones relacionadas