将字典吹出到列表中

发布于 2024-10-30 17:24:49 字数 329 浏览 3 评论 0原文

我有一本带有此签名的字典:

Dictionary<decimal, int>

里面的项目看起来像这样:

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

我需要将其扩展到具有此签名的列表:

List<double>

里面的项目看起来像这样:

90
90
60
60
60
30
30
30
30
20

关于如何以优雅而有效的方式做到这一点的任何想法?

I have a dictionary with this signature:

Dictionary<decimal, int>

Items inside it look like this:

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

I need to blow this out to a list that has this signature:

List<double>

Items inside would look like this:

90
90
60
60
60
30
30
30
30
20

Any ideas on how to do this in an elegant and efficient way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

多孤肩上扛 2024-11-06 17:24:49

尝试以下操作

dictionary
  .SelectMany(pair => Enumerable.Repeat((double)pair.Key, pair.Value))
  .OrderByDescending(x => x)
  .ToList();

Try the following

dictionary
  .SelectMany(pair => Enumerable.Repeat((double)pair.Key, pair.Value))
  .OrderByDescending(x => x)
  .ToList();
べ繥欢鉨o。 2024-11-06 17:24:49
dictionary
    .SelectMany(kvp => Enumerable.Repeat(Decimal.ToDouble(kvp.Key), kvp.Value))
    .ToList()
dictionary
    .SelectMany(kvp => Enumerable.Repeat(Decimal.ToDouble(kvp.Key), kvp.Value))
    .ToList()
走过海棠暮 2024-11-06 17:24:49
foreach (var pair in dict)
    for (int i=0;i<pair.Value;i++)
        list.Add((double)pair.Key);
foreach (var pair in dict)
    for (int i=0;i<pair.Value;i++)
        list.Add((double)pair.Key);
痴者 2024-11-06 17:24:49
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));
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));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文