C # split, возврат пар ключ / значение в массиве - PullRequest
12 голосов
/ 13 февраля 2011

Я новичок в C #, и поэтому ищу условия обывателя по этому поводу.По сути, я хотел бы сделать следующее:

key1 = val1 | key2 = val2 | ... | keyN = valN

в массив базы данных, где, как вы уже догадались, key1 возвращаетval1, key2 возвращает val2 и т. д. Я знаю, что могу вернуть строку, используя split, но с этого момента я в растерянности.Любая помощь будет принята с благодарностью!Надеюсь, я четко изложил свои намерения, но если у вас есть какие-либо вопросы, не стесняйтесь их задавать!

Ответы [ 3 ]

54 голосов
/ 13 февраля 2011
string s = "key1=val1|key2=val2|keyN=valN";
var dict = s.Split('|')
            .Select(x => x.Split('='))
            .ToDictionary(x => x[0], x => x[1]);

Теперь dict - это Dictionary<string, string> с нужными парами ключ / значение.

8 голосов
/ 13 февраля 2011
Dictionary<string,string> results = new Dictionary<string,string>();
foreach(string kvp in source.split('|'))
{
    results.Add(kvp.split('=')[0], kvp.split('=')[1]);
}

Вероятно, способ Linq сделать это.

4 голосов
/ 17 мая 2013
 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());
...