如何在C#中将列表内容重复指定m次?
简洁重复列表内容的几种方案
给你几个比循环调用AddRange更简洁的实现方式:
1. LINQ一行搞定(最简洁)
用Enumerable.Repeat生成包含多次原列表的序列,再通过SelectMany展开成一维列表:
var list = new List<int> { 1, 2, 3 }; var repeatedList = Enumerable.Repeat(list, 3).SelectMany(x => x).ToList();
最终得到的repeatedList就是{1, 2, 3, 1, 2, 3, 1, 2, 3}。
2. 预分配容量的高效写法
如果在意性能,提前计算并分配好最终列表的容量,能避免List自动扩容带来的开销,写法也很直观:
var list = new List<int> { 1, 2, 3 }; var repeatedList = new List<int>(list.Count * 3); foreach (var _ in Enumerable.Range(0, 3)) { repeatedList.AddRange(list); }
3. 静态内容直接写死(适合固定场景)
如果原列表内容和重复次数都是固定不变的,直接初始化新列表是最直接的方式:
var repeatedList = new List<int> { 1, 2, 3, 1, 2, 3, 1, 2, 3 };
内容的提问来源于stack exchange,提问作者majorro
相关产品推荐
相关产品推荐

