Как перемешать массив ключ-значение
Перемешать (или рандомизировать) что-то, иногда бывает совсем не простой задачей. Представим, что у вас есть Dictionary, в котором храниться ключ-значение и вам необходимо его перемешать. Готового метода для решения этой задачи нет. Но обо всем по порядку.
Dictionary<string , int> dic = new Dictionary</string><string , int>();
for (int i = 0; i < 10; i++)
dic.Add(i.ToString(), i);
foreach (KeyValuePair<string, int> item in dic)
{
Console.WriteLine(string.Format("{0} => {1}", item.Key, item.Value));
}
Console.ReadKey();
Добавляем десять элементов и смотрим результат.

Рандомизация элементов может быть достаточно сложной задачей для новичка. Но есть очень интересное решение: чтобы рандомизировать наш массив, воспользуемся лямбда-выражением в связке с классом Random. В итоге получаем следующий код:
Dictionary</string><string , int> dic = new Dictionary</string><string , int>();
for (int i = 0; i < 10; i++)
dic.Add(i.ToString(), i);
Random rand = new Random();
dic = dic.OrderBy(x => rand.Next())
.ToDictionary(item => item.Key, item => item.Value);
foreach (KeyValuePair</string><string , int> item in dic)
{
Console.WriteLine(string.Format("{0} => {1}", item.Key, item.Value));
}
Console.ReadKey();
Результат работы:

Вот таким образом вы можете использовать лямбда-выражения для перемешивания массива.
Популярность: 4%
Если у вас возникли вопросы, вы можете оставить их в комментариях


Готового решения нет, так как на то он и Dictionary чтобы храниться выровненным по хеш. Надо бы скорость проверить теперь