1
int x = 9; 
List<string> list = new List<string> {"a", "b"};

リストを次のようにしたい:ababa ... list.Count = xまで。どうすればこれを達成できますか?

4

4 に答える 4

4

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、もちろんこれも機能します。

于 2012-06-06T06:50:24.730 に答える
3

どうですか:

var result= Enumerable.Repeat(new[] { "a", "b" }, int.MaxValue)
                      .SelectMany(strArray => strArray)
                      .Take(x)
                      .ToList();
于 2012-06-06T06:51:24.383 に答える
0

このようなものがうまくいくはずです。私はそれをチェックしませんでした、それはあなたのための練習にしましょう:)

int currentCount = list.Count;

for (int i=0; i<x; ++i)
{
     list.Add(list[i%currentCount]);  
}
于 2012-06-06T06:50:46.253 に答える
0
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);    
}
于 2012-06-06T06:51:43.603 に答える