当前位置: 首页 > news >正文

C#测试linq中的左连接的基本用法

  使用linq联表或者连接两个对象集合查询时一般使用的是join关键字,返回结果中包含两个表或两个对象集合中连接字段相等的数据记录,如果要实现sql语句中的左连接效果,并没有现成的left join关键字,此时可以使用DefaultIfEmpty 实现左连接(也可以GroupJoin和SelectMany,具体请百度或咨询大模型)。
  首先定义两个集合对象,如下所示:

List<Customer> lstCustomer = new List<Customer>();
lstCustomer.Add(new Customer { Id = 1, Name = "张三", Sex = "男" });
lstCustomer.Add(new Customer { Id = 2, Name = "李四", Sex = "男" });
lstCustomer.Add(new Customer { Id = 3, Name = "王五", Sex = "男" });
lstCustomer.Add(new Customer { Id = 4, Name = "赵六", Sex = "男" });
lstCustomer.Add(new Customer { Id = 5, Name = "钱多多", Sex = "男" });
lstCustomer.Add(new Customer { Id = 6, Name = "李雷", Sex = "男" });
lstCustomer.Add(new Customer { Id = 7, Name = "韩梅梅", Sex = "女" });List<Contact> lstContact = new List<Contact>();
lstContact.Add(new Contact { Id = 2, Address = "北京", Email = "123@qq.com", Telephone = "123456789" });
lstContact.Add(new Contact { Id = 4, Address = "上海", Email = "456@qq.com", Telephone = "123456789" });
lstContact.Add(new Contact { Id = 6, Address = "天津", Email = "789@qq.com", Telephone = "123456789" });
lstContact.Add(new Contact { Id = 8, Address = "重庆", Email = "101112@qq.com", Telephone = "123456789" });
lstContact.Add(new Contact { Id = 10, Address = "伦敦", Email = "121314@qq.com", Telephone = "123456789" });

  首先是join关键字的效果,如下所示,join仅返回两个集合中id相同的数据记录。

var result = from g in lstCustomerjoin h in lstContact on g.Id equals h.Idselect new{ID = g.Id,Name = g.Name,Address = h.Address,Email = h.Email};

在这里插入图片描述
  然后就是左连接使用示例,如下所示:

var result = from g in lstCustomerjoin h in lstContact on g.Id equals h.Id into LeftJoinGroupfrom  k in LeftJoinGroup.DefaultIfEmpty()select new{ID = g.Id,Name = g.Name,Address = k?.Address,Email = k?.Email};

在这里插入图片描述

参考文献:
[1]https://www.cnblogs.com/keeplearningandsharing/p/16620651.html
[2]https://cloud.tencent.com/developer/article/2414328

相关文章:

  • 嵌入式程序更换为IAP网络固件升级教程
  • 保生产 促安全 迎国庆
  • Android studio开发——room功能实现用户之间消息的发送
  • 【实战】在 Linux 上使用 Nginx 部署 Python Flask 应用
  • 实现Azure Databricks安全地请求企业内部API返回数据
  • 【MySQL】004.MySQL数据类型
  • 【Openlayers】Openlayers 入门教程
  • ARINC818-实现
  • 解决 IntelliJ IDEA 项目启动时端口冲突问题
  • Spring Boot中Excel处理完全指南
  • 基于chatgpt和deepseek解答显卡的回答
  • PyTorch数据操作基础教程:从张量创建到高级运算
  • STM32 外部中断EXTI
  • 原生localStorage到zustand + persist改造
  • [密码学基础]密码学发展简史:从古典艺术到量子安全的演进
  • 碰一碰发视频系统源码搭建全解析:定制化开发
  • 芝法酱躺平攻略(21)——kafka安装和使用
  • LabVIEW 程序维护:为何选靠谱团队?
  • 纯FPGA控制AD9361的思路和实现之一 概述
  • JVM 系列:JVM 内存结构深度解析
  • 执掌伯克希尔60年,股神巴菲特宣布年底交出最终决定权:阿贝尔将接任CEO
  • 泽连斯基拒绝普京72小时停火提议,坚持应尽快实现30天停火
  • 青海大学常务副校长(正厅级)任延明已任省卫健委党组书记
  • 长三角铁路今日预计发送390万人次,昨日客发量同比增长10.5%
  • 美国将于6月14日举行阅兵式,美媒报当天是特朗普生日
  • 出口管制不能将民用技术泛安全化,也不能破坏全球供应链稳定