.NET で C# を使用して 2 つ以上のリストを 1 つのリストに変換することは可能ですか?
例えば、
public static List<Product> GetAllProducts(int categoryId){ .... }
.
.
.
var productCollection1 = GetAllProducts(CategoryId1);
var productCollection2 = GetAllProducts(CategoryId2);
var productCollection3 = GetAllProducts(CategoryId3);
ベストアンサー1
LINQを使うことができますConcat
そしてToList
方法:
var allProducts = productCollection1.Concat(productCollection2)
.Concat(productCollection3)
.ToList();
これを行うには、より効率的な方法があることに注意してください。上記のコードは基本的にすべてのエントリをループし、動的にサイズが調整されるバッファを作成します。サイズは最初から予測できるため、この動的なサイズ調整は必要ありません。そのため、次のコードを使用できます。
var allProducts = new List<Product>(productCollection1.Count +
productCollection2.Count +
productCollection3.Count);
allProducts.AddRange(productCollection1);
allProducts.AddRange(productCollection2);
allProducts.AddRange(productCollection3);
(は効率化のためAddRange
に特別に使用されますICollection<T>
。)
ただし、本当に必要な場合を除いて、このアプローチは採用しません。