在C#.NET中将两个(或多个)列表合并为一个

是否可以使用C#在.NET中将两个或多个列表转换为一个列表?

例如,

public static List<Product> GetAllProducts(int categoryId){ .... }

.

.

.

var productCollection1 = GetAllProducts(CategoryId1);

var productCollection2 = GetAllProducts(CategoryId2);

var productCollection3 = GetAllProducts(CategoryId3);

回答:

您可以使用LINQ ConcatToList方法:

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

除非您确实需要,否则我不会采用这种方法。

以上是 在C#.NET中将两个(或多个)列表合并为一个 的全部内容, 来源链接: utcz.com/qa/426643.html

回到顶部