C# .NETで2つ(またはそれ以上)のリストを1つに結合する 質問する

C# .NETで2つ(またはそれ以上)のリストを1つに結合する 質問する

.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>。)

ただし、本当に必要な場合を除いて、このアプローチは採用しません。

おすすめ記事