Вынести словарь в список - PullRequest
3 голосов
/ 07 апреля 2011

У меня есть словарь с этой подписью:

Dictionary<decimal, int>

Предметы внутри него выглядят так:

90, 2
60, 3
30, 4
20, 1

Мне нужно добавить это к списку с такой подписью:

List<double>

Предметы внутри будут выглядеть так:

90
90
60
60
60
30
30
30
30
20

Есть идеи, как сделать это элегантно и эффективно?

Ответы [ 4 ]

8 голосов
/ 07 апреля 2011

Попробуйте следующее

dictionary
  .SelectMany(pair => Enumerable.Repeat((double)pair.Key, pair.Value))
  .OrderByDescending(x => x)
  .ToList();
5 голосов
/ 07 апреля 2011
dictionary
    .SelectMany(kvp => Enumerable.Repeat(Decimal.ToDouble(kvp.Key), kvp.Value))
    .ToList()
1 голос
/ 07 апреля 2011
foreach (var pair in dict)
    for (int i=0;i<pair.Value;i++)
        list.Add((double)pair.Key);
0 голосов
/ 07 апреля 2011
public static IEnumerable<T> Blowout<T>(T value, int length)
{
    for (int i = 0; i < length; i++) yield return value;
}

dictionary
    .SelectMany(pair => Blowout((double)pair.Key, pair.Value));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...