将枚举的多个副本添加到List的惯用方法

时间:2013-11-09 00:29:36

标签: c# list enums

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

当然,问题在于,我现在正在看的东西没有明显的方法可以解决这个问题。到目前为止,我最热闹的想法是将所有添加int Enum的{​​{1}}个线程生成到同一个列表中,仅在一秒后死亡。但是,就代码而言,产生线程并不奇怪,根本不是羽量级的,它比使用while更加臭。

2 个答案:

答案 0 :(得分:4)

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

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

FooEnum是元组中枚举的类型)

答案 1 :(得分:1)

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

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