C# Linq的Union()方法 – 返回两个序列的并集

  • Post category:C#

下面是关于C# Linq的Union()的完整攻略。

1. Union()方法概述

在C# Linq中,Union()方法用于返回两个序列的并集,并且保留相同的元素只出现一次,即去重。

Union()方法的语法如下:

public static IEnumerable<TSource> Union<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second
);

其中,first表示第一个序列,second表示第二个序列。

2. Union()方法示例

示例1

我们有两组数字,分别为a组和b组,如下所示:

int[] a = { 1, 2, 3, 4 };
int[] b = { 3, 4, 5, 6 };

我们可以使用Union()方法将这两个数组合并,代码如下:

var result = a.Union(b);
foreach (var item in result)
{
    Console.WriteLine(item);
}

输出结果为:

1
2
3
4
5
6

注意,Union()方法去除了两组数字中相同的元素34,只保留了一次。

示例2

我们有两组学生,分别为a组和b组,如下所示:

List<Student> a = new List<Student>()
{
    new Student() { Id = 1, Name = "小明" },
    new Student() { Id = 2, Name = "小红" },
    new Student() { Id = 3, Name = "小刚" },
    new Student() { Id = 4, Name = "小美" },
};

List<Student> b = new List<Student>()
{
    new Student() { Id = 3, Name = "小刚" },
    new Student() { Id = 4, Name = "小美" },
    new Student() { Id = 5, Name = "小花" },
    new Student() { Id = 6, Name = "小李" },
};

我们可以使用Union()方法将这两组学生合并,代码如下:

var result = a.Union(b);
foreach (var item in result)
{
    Console.WriteLine($"学号:{item.Id},姓名:{item.Name}");
}

输出结果为:

学号:1,姓名:小明
学号:2,姓名:小红
学号:3,姓名:小刚
学号:4,姓名:小美
学号:5,姓名:小花
学号:6,姓名:小李

注意,Union()方法合并了两组学生信息,去除了相同的Id34的学生,只保留了一次。