我有一个表示为Tuple<Enum,int>
的结构。我需要将其转换为List<Enum>
,以便列表应包含int
Enum
个副本。我显然可以在while
上使用List.Add
循环来执行此操作,但我正在努力避免使用它,因为它不能保证终止。我想对C#使用一些更惯用的东西,主要用于一般的代码清洁度。
当然,问题在于,我现在正在看的东西没有明显的方法可以解决这个问题。到目前为止,我最热闹的想法是将所有添加int
Enum
的{{1}}个线程生成到同一个列表中,仅在一秒后死亡。但是,就代码而言,产生线程并不奇怪,根本不是羽量级的,它比使用while
更加臭。
答案 0 :(得分:4)
您可以使用Enumerable.Repeat
或Enumerable.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();