【问题标题】:Idiomatic way to add multiple copies of an enum to a List将枚举的多个副本添加到列表的惯用方法
【发布时间】:2013-11-09 00:29:35
【问题描述】:

我有一个表示为Tuple<Enum,int> 的结构。我需要将其转换为List<Enum>,这样列表应该有Enumint 副本。我显然可以在List.Add 上使用while 循环来执行此操作,但我正在努力避免使用它,因为它不能保证终止。我想使用 C# 更惯用的东西,主要是为了使代码更简洁。

当然,问题在于我现在正在查看的内容没有明显的方法可以做到这一点。到目前为止,我最有趣的想法是产生int 的线程数,这些线程都将Enum 添加到同一个列表中,但一秒钟后就死掉了。但不出所料,就代码而言,生成线程一点也不轻巧,而且比使用while 更臭。

【问题讨论】:

    标签: c# list enums


    【解决方案1】:

    您可以使用Enumerable.RepeatEnumerable.Range 执行此任务:

    List<FooEnum> enums = Enumerable.Repeat(tuple.Item1, tuple.Item2).ToList();
    

    FooEnum 是元组中枚举的类型)

    【讨论】:

    • 疯狂的宾果游戏。非常感谢!
    【解决方案2】:

    您的问题缺少一些细节,但也许这会有所帮助:

    Tuple<Enum, int> x = ...
    var result = Enumerable.Range(0, x.Item2).Select(i => x.Item1).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多