编辑
2025-02-04
C# 应用
00
请注意,本文编写于 91 天前,最后修改于 91 天前,其中某些信息可能已经过时。

目录

摘要
正文
Concat 方法
Union 方法
总结

摘要

在C#中,LINQ(Language Integrated Query)提供了一种声明式的编程方式,可以用来对数据进行查询、筛选、排序等操作。当你想要拼接(即连接)两个序列时,LINQ提供了几种方法,最常用的是ConcatUnion

正文

Concat 方法

Concat方法用于将两个序列拼接成一个序列,保留原始序列中的所有元素,包括重复元素。如果第一个序列中有重复的元素,或者第二个序列中有元素与第一个序列中的元素相同,这些元素在结果序列中都会被保留。

基础类

C#
class Hero { public int HeroNo { get; set; } public string Name { get; set; } public string Country { get; set; } public int Age { get; set; } public Hero(string name, int age, int heroNo, string country) { Name = name; Age = age; HeroNo = heroNo; Country = country; } } class Army { public int HeroNo { get; set; } public int ArmyNo { get; set; } public int Qty { get; set; } public string TeamLeader { get; set; } }

调用

C#
private void btnSearch_Click(object sender, EventArgs e) { List<Hero> heroes = new List<Hero> { new Hero("张飞",38,100,"蜀"), new Hero("刘备",40,101,"蜀"), new Hero("关羽",39,102,"蜀"), new Hero("曹操",45,103,"魏"), new Hero("孙权",31,104,"吴"), new Hero("黄忠",45,105,"蜀"), new Hero("夏侯惇",45,106,"魏") }; List<Army> armies = new List<Army> { new Army(){ArmyNo=1,HeroNo=100,Qty=10000,TeamLeader="A1"}, new Army(){ArmyNo=2,HeroNo=100,Qty=30000,TeamLeader="A2"}, new Army(){ArmyNo=3,HeroNo=101,Qty=40000,TeamLeader="A3"}, new Army(){ArmyNo=4,HeroNo=102,Qty=45000,TeamLeader="A4"}, new Army(){ArmyNo=5,HeroNo=103,Qty=18000,TeamLeader="A5"}, new Army(){ArmyNo=6,HeroNo=103,Qty=80000,TeamLeader="A6"}, }; var ret = heroes.Select(x => x.Name).Concat(armies.Select(x => x.TeamLeader)); foreach (var item in ret) { lstMain.Items.Add(item); } }

注意:连接的数据类型一定一致

image.png

Union 方法

Concat不同,Union方法用于返回两个序列的并集,这意味着它会移除重复的元素。如果两个序列中有重复的元素,这些元素在结果序列中只会出现一次。

C#
using System; using System.Linq; class Program { static void Main() { int[] first = { 1, 2, 3 }; int[] second = { 3, 4, 5 }; var unioned = first.Union(second); foreach(var element in unioned) { Console.WriteLine(element); } } }

image.png

总结

  • 使用Concat来拼接两个序列,如果你希望保留所有元素,包括重复的元素。
  • 使用Union来合并两个序列,如果你希望移除重复的元素,只保留唯一的元素。

选择哪种方法取决于你的具体需求,是否需要保留序列中的重复元素。

本文作者:rick

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!