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

例如,

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

(为了提高效率,AddRangeICollection<T>的特例.)

除非你真的迫不得已,否则我不会采取这种方法.

.net相关问答推荐

NETSDK1083:无法识别指定的 RuntimeIdentifierwin10-x64

在平板电脑上运行我的 Angular 13 和 .Net Api 项目时,它不会向 api 输入请求

EFCore.DbSet.Update 方法添加新行而不是更新它

ECS服务无法从Cognito获取配置

在数据网格中:如何在更改单元格 A 中的值后显示单元格 B 中的更改

CustomControl 计算自己的宽度和高度 - 使用 bounds.Height=0 调用 ArrangeOverride

关于在 .NET 中干净地终止线程的问题

在 C# 中输入按键

调整小数精度,.net

log4net 与 TraceSource

C#:内存不足异常

什么是编组?当某些东西被编组时会发生什么?

在 JavaScript 中使用 String.Format?

是否可以更改 Winforms 组合框以禁用输入?

List 和 IEnumerable 的实际区别

如何将 System.Type 转换为其可为空的版本?

.NET 中的对象引用有多大?

C# 应用程序中的全局键盘捕获

程序员应该使用 SSIS,如果是,为什么?

从 Visual Studio 2015 发布 - 允许不受信任的证书