小编典典

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

all

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

例如,

public static List<Product> GetAllProducts(int categoryId){ .... }
.
.
.
var productCollection1 = GetAllProducts(CategoryId1);
var productCollection2 = GetAllProducts(CategoryId2);
var productCollection3 = GetAllProducts(CategoryId3);

阅读 90

收藏
2022-04-19

共1个答案

小编典典

您可以使用 LINQConcatToList方法:

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

除非您确实必须这样做,否则我不会采用这种方法。

2022-04-19