2014-11-27 2 views
1

У меня есть массив строк. Каждая строка состоит из двух чисел, разделенных символом «|».Массив объединенных строк в словарь <int, int>

Как я могу получить этот массив строки в Dictionary<int,int> без перебора массива, разделения каждой строки и добавления в словарь.

Есть ли лучший способ?

ответ

4

просто

var result = strings 
    .Select(s => s.Split('|')) 
    .ToDictionary(a => int.Parse(a[0]), a => int.Parse(a[1])); 

если дубликаты разрешены,

var result = strings 
    .Select(s => s.Split('|')) 
    .ToLookup(a => int.Parse(a[0]), a => int.Parse(a[1])); 
1

Вы можете использовать ToDictionary метод:

var dictionary = stringArray.ToDictionary(x => x.Split('|')[0], x => x.Split('|')[1]); 

Но вы должны знать, что это будет сгенерировано исключение, если есть повторяющиеся ключи.

+0

конечно, это очень очевидно, когда ответ перед вами ... спасибо – dotnethaggis

+2

почему разделить его дважды, его wastefull – Jodrell

Смежные вопросы