是否可以使用 C# 在 .NET 中将两个或多个列表转换为一个列表?
例如,
public static List<Product> GetAllProducts(int categoryId){ .... } . . . var productCollection1 = GetAllProducts(CategoryId1); var productCollection2 = GetAllProducts(CategoryId2); var productCollection3 = GetAllProducts(CategoryId3);
您可以使用 LINQConcat和ToList方法:
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>。)
AddRange
ICollection<T>
除非您确实必须这样做,否则我不会采用这种方法。