c# Enumerable<T>的GroupJoin方法和Join的用法和区别

在 C# 中,Enumerable<T> 类提供了 Join 方法和 GroupJoin 方法,用于对两个集合进行连接操作。这两个方法的用法和区别如下:

Join 方法: 相当于 sql中的inner join

  • Join 方法用于将两个集合中的元素根据指定的键相匹配,并返回一个新的结果集。
  • 该方法接受四个参数:内部集合、外部集合、内部键选择器和外部键选择器。
  • 返回的结果集会包含一个元祖,包含内部集合和外部集合匹配的元素。
c# 复制代码
var persons = new List<Person> { new Person { Id = 1, Name = "Alice" }, new Person { Id = 2, Name = "Bob" } };
var orders = new List<Order> { new Order { PersonId = 1, Amount = 100 }, new Order { PersonId = 2, Amount = 200 } };

var result = persons.Join(orders, person => person.Id, order => order.PersonId, (person, order) => new { person.Name, order.Amount });

// 结果集:{ Name = "Alice", Amount = 100 }, { Name = "Bob", Amount = 200 }

GroupJoin 方法: 相当于 sql的 left join

  • GroupJoin 方法也将两个集合中的元素根据指定的键匹配,但它会将匹配的元素分组,并返回一个嵌套集合。
  • 该方法接受四个参数:内部集合、外部集合、内部键选择器、外部键选择器和结果选择器。
  • 结果集将是一个包含内部集合和外部集合匹配元素的集合。
c# 复制代码
var persons = new List<Person> { new Person { Id = 1, Name = "Alice" }, new Person { Id = 2, Name = "Bob" } };
var orders = new List<Order> { new Order { PersonId = 1, Amount = 100 }, new Order { PersonId = 2, Amount = 200 } };

var result = persons.GroupJoin(orders, person => person.Id, order => order.PersonId, (person, order) => new
{
    Name = person.Name,
    Orders = order
});

// 结果集:{ Name = "Alice", Orders = { Amount = 100 } }, { Name = "Bob", Orders = { Amount = 200 } }

总的来说,Join 方法用于生成一个扁平结果集,GroupJoin 方法用于生成一个嵌套结果集。

相关推荐
Envyᥫᩣ2 小时前
C#语言:从入门到精通
开发语言·c#
IT技术分享社区8 小时前
C#实战:使用腾讯云识别服务轻松提取火车票信息
开发语言·c#·云计算·腾讯云·共识算法
△曉風殘月〆15 小时前
WPF MVVM入门系列教程(二、依赖属性)
c#·wpf·mvvm
逐·風17 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
m0_6569747420 小时前
C#中的集合类及其使用
开发语言·c#
九鼎科技-Leo20 小时前
了解 .NET 运行时与 .NET 框架:基础概念与相互关系
windows·c#·.net
九鼎科技-Leo1 天前
什么是 ASP.NET Core?与 ASP.NET MVC 有什么区别?
windows·后端·c#·asp.net·mvc·.net
.net开发1 天前
WPF怎么通过RestSharp向后端发请求
前端·c#·.net·wpf
小乖兽技术1 天前
C#与C++交互开发系列(二十):跨进程通信之共享内存(Shared Memory)
c++·c#·交互·ipc
幼儿园园霸柒柒1 天前
第七章: 7.3求一个3*3的整型矩阵对角线元素之和
c语言·c++·算法·矩阵·c#·1024程序员节