C#合并集合与数组:Union与Concat的区别及BinarySearch使用

晚来风
晚来风
发布时间:2026-10-14 | 2人浏览过
原创

在开发过程中,数组和集合的处理是最让我们担心的部分。一般会用for or foreach 来处理一些操作。这里介绍一些常用的集合跟数组的操作函数。

结果或目标

本教程旨在展示如何在C#中对 List<int> 和 int[] 进行合并、去重/保留重复项以及元素存在性判断。

准备条件

首先举例2个集合A,B.

List<int> listA = new List<int> {1,2,3,5,7,9};

List<int> listB = new List<int> {13,4,17,29,2};

真实操作顺序

第1步:合并两个集合

目的:将集合B的所有元素追加到集合A中。

入口:List<int>.AddRange()

动作:listA.AddRange(listB);

注意:此操作会修改原始集合A的内容。

第2步:获取去重的合并结果

目的:生成一个新的集合,包含A和B的所有元素,但剔除重复项。

入口:List<T>.Union()

参数与动作:List<int> Result = listA.Union(listB).ToList<int>();

完成状态:Result包含A和B中所有不重复的元素。

第3步:获取保留重复项的合并结果

目的:生成一个新的集合,包含A和B的所有元素,不剔除重复项。

入口:List<T>.Concat()

参数与动作:List<int> Result = listA.Concat(listB).ToList<int>();

完成状态:Result包含A和B中所有元素,若有重复则全部保留。

第4步:判断集合中是否包含某个值

目的:检查特定值是否存在于集合中。

入口:List<T>.BinarySearch()

重要参数:需要搜索的值。
动作:listA.BinarySearch(“1”);
可观察结果:如果包含则返回该值的索引;如果不包含则返回负数。
注意:原文描述为"返回0"是不准确的,应理解为"找到时返回非负索引"。

在举例两个数组

在举例两个数组

int[] i=new int[]{1,2};
int[] j=new int[]{2,3};
List<int> r = new List<int>();
r.AddRange(i);

r.AddRange(j);
int[] c = r.ToArray();
合并数组

int[] x=i.Union(j).ToArray<int>(); //剔除重复项

int[] x=i.Concat(j).ToArray<int>(); //保留重复项

int n = Array.BinarySearch(i,3);//判断数组中是否包含某个值.如果包含则返回0

完成判断

以上操作涵盖了C#中常见的集合与数组处理方法,通过选择合适的扩展方法可以实现不同的需求。

简要总结

以上就是C#对多个集合和数组的操作方法(合并,去重,判断)的详细内容,更多关于C#集合与数组操作的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表