首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET List <T> Concat与AddRange

.NET List<T> 的 Concatenate 与 AddRange 方法是在 .NET 框架中实现合并列表的功能的方法。虽然它们都有相似的目的,但使用方式有所不同,下面是 Concatenate 和 AddRange 方法的比较和实现。

List<T> Concat 方法:这个方法是将两个或多个 List<T> 的片段连接成一个新的 List<T>。这个方法接收一个源 List<T> 和一个或多个目标 List<T> 作为参数,并返回一个 New List<T> 实例。

例如:

代码语言:csharp
复制
List<int> sourceList1 = new List<int> { 1, 2, 3 };
List<int> sourceList2 = new List<int> { 4, 5, 6 };
List<int> concatenatedList = sourceList1.Concat(sourceList2).ToList();

当使用 Concatenate 方法时,我们得到一个合并的新列表并返回它。而原始列表保持不变(即原始 list 不会被改变)。这个方法支持不同类型的数据,包括 ValueT、Guid、DateTime、bool 等。

List<T> AddRange 方法:这个方法是将一个可迭代对象中的元素添加到 List<T> 实例中,并返回新列表的长度。这个方法接收一个源(source)列表、一个可迭代对象(sequence)和一个可选的增量(start index)作为参数,并返回列表的长度。

例如:

代码语言:csharp
复制
List<int> sourceList = new List<int> { 1, 2, 3 };
int[] numbers = { 4, 5, 6 };
int index = 0;

sourceList.AddRange(numbers, index);

当我们使用 AddRange 方法时,直接将源 list 和可迭代对象中的数据合并,并返回列表的长度。需要注意的是该方法并不生成一个新的 List<T> 实例,而只是在源列表的基础上进行修改,源列表可能不会保留其原始内容而改变。该方法的类型是允许的,比如 bool、Guid、DateTime、int 等等。

总结:

  • Concatenate 方法主要用于合并多个 List<T> 实例,生成一个新的列表,而原有的 List<T> 列表保持不改变;
  • AddRange 方法接受一个列表、一个可迭代对象和一个可选的起始索引,将可迭代对象中的元素添加到源列表中;同时,AddRange 对象不生成一个新的列表,而是直接修改源列表。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C#实现WinForm DataGridView控件支持叠加数据绑定

    我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支持,而不是实现,是因为他既可以是实现了IListSource的类型,也可以是实现了IList的类型,例如:List类型,DataTable类型等,这里就不一一列举了,今天我主要实现的功能如标题所描述的:实现WinForm DataGridView控件支持叠加数据绑定,或者说是附加数据功能,什么意思呢?说白了就是支持数据的多次绑定,标准的绑定方法只支持单一绑定,即每次绑定均会清除原来的数据,而叠加数据绑定则可实现每次绑定均以附加的形式(原数据保留)添加到DataGridView控件中,这样就实现了分页加载,但可完整显示已加载的所有数据,这种应用场景在C/S端很常见,B/S端上也有(例如QQ空间动态下面的加载更多按钮)

    03

    WPF NET5 Prism8.0的升级指南

    ​ 曾经我以学习的目的写了关于在.NET Core3.1使用Prism的系列文章.NET Core 3 WPF MVVM框架 Prism系列文章索引,也谢谢大家的支持,事实上当初的版本则是Prism7.2.0.1442(7.2)版本,而现在也发布了.NET5和最新的Prism8.0.0.1909(8.0)版本,因此同样的我想将之前的Prism Demo项目可以升级到最新,写这篇文章的目的是自己也能学习一番,而更多的是回答那些在我Prism系列文章下面留下的我认为可以拿来一讲一些问题,而有些问题我则是水平有限回答不了(真的不是不想回答)  然后我拿之前的Prism Demo项目,WPF从.NET Core3.1升级到.NET 5其实非常简单,无脑修改项目的TargetFramework为net5.0-windows就行了,但是当Prism7.2升级到Prism8.0,我发现build的时候报了很多错误,那么让我们来看看究竟Prism8.0更新了些啥

    04
    领券