C#のジェネリックリストの範囲に値を追加する方法を知っている人はいますか?
私は現在、大規模なビルドを行ってList<List<int>>
おり、プロセス全体に時間がかかりすぎています。時間を節約するために、foreachループとネストされたforeachループの使用を避けようとしています。
ジェネリックリストに600行あったとしましょう。最初の200行のそれぞれに、「1」を追加したいと思います。次の200では、「2」を追加したいと思います。次の200では、「3」を追加したいと思います。
今のやり方では、600回ループしてそれぞれを個別に追加する必要がありますが、やりたいのは3回ループしてエントリをまとめて追加することです。
私が望んでいたコードは次のようになります。
List<List<int>> idList = GetFullList(); //list contains 600 rows
int[] newItems = {1, 3, 5};
int count = 0;
int amountToAmend = 200;
foreach (int i in newItems)
{
//List<int> newID = new List<int>();
//newID.Add(i);
(idList.GetRange(count, amountToAmend)).Add(i);
count += amountToAmend;
}
明らかにこれは機能しませんが、うまくいけば、私が目指しているようなものを見ることができます。私のアプリケーションでは、現在、何万もの不要なループを実行する必要があります。コードが存在する場合、10未満で実行できることがよくあります。
更新:私はこれをうまく説明したかどうかわからないので、明確にするために、ここに私が探している結果があります
このように6行のリストがある場合:
[6,7,8]
[5,6,7]
[6,4,8]
[2,4,7]
[5,1,7]
[9,3,5]
最初の3行に1を追加し、次の3行に2を追加したいので、次のようになります。
[6,7,8,1]
[5,6,7,1]
[6,4,8,1]
[2,4,7,2]
[5,1,7,2]
[9,3,5,2]
これはforeachループで簡単に実行でき、現在の方法ですが、膨大な量のデータが関係しているため、特定の機能にかかる時間を短縮する方法を探しています。方法が存在するかどうかはわかりませんが、誰かが知っているなら、それはStackOverflowの良い人になるでしょう:)