int x = 9;
List<string> list = new List<string> {"a", "b"};
我希望列表是:ababa ...直到list.Count = x。我怎样才能做到这一点?
您可以使用 LINQ 轻松完成:
List<string> result = (from ignored in Enumerable.Range(0, int.MaxValue)
from item in list
select item).Take(count).ToList();
或者不使用查询表达式:
List<string> result = Enumerable.Range(0, int.MaxValue)
.SelectMany(ignored => list)
.Take(count)
.ToList();
这里的使用Enumerable.Range
只是为了强制重复——就像阿尼的使用方法一样Enumerable.Repeat
,当然也可以。
怎么样:
var result= Enumerable.Repeat(new[] { "a", "b" }, int.MaxValue)
.SelectMany(strArray => strArray)
.Take(x)
.ToList();
像这样的东西应该工作。我没有检查它,让它成为你的练习:)
int currentCount = list.Count;
for (int i=0; i<x; ++i)
{
list.Add(list[i%currentCount]);
}
int x = 9;
List<string> list = new List<string> {};
for (int i = 0; i < x; i++)
{
list.Add("a");
list.Add("b");
}
// verify
foreach (var item in list)
{
Console.WriteLine(item);
}