Получить все ключи в массиве словаря - PullRequest
0 голосов
/ 02 мая 2018

У меня есть массив словарей следующим образом:

Dictionary<int, int>[] matrix = new Dictionary<int, string>[10];

Мне нужны все ключи, сохраненные в этом словаре, которые я использую в цикле foreach, как показано ниже:

 foreach (int key in matrix.Keys)
  {

  }

Очевидно, matrix.Keys здесь не сработает. Итак, есть ли способ получить все ключи словаря без циклического перебора всего массива (может быть Linq или что-то)?

Ответы [ 4 ]

0 голосов
/ 02 мая 2018

Чтобы получить сумму всех значений из всех словарей в массиве, я бы предложил:

var total = matrix.SelectMany(z => z).Sum(z => z.Value);

или

var total = matrix.SelectMany(z => z.Values).Sum(z => z);

Нет необходимости получать Keys, поскольку вы действительно заинтересованы в Values.

0 голосов
/ 02 мая 2018
 var allKeys = matrix.SelectMany(d => d.Keys);

 foreach (int key in allKeys) ...
0 голосов
/ 02 мая 2018

Используйте LINQ SelectMany:

var keys = matrix.SelectMany(x => x.Keys);
0 голосов
/ 02 мая 2018

Предполагая, что вашим результатом должен быть список ключей, которые вы можете использовать SelectMany()

IEnumerable<int> result = matrix.SelectMany(x => x.Keys);

https://dotnetfiddle.net/LgIwr7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...