当前位置: 首页 > 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 内存结构深度解析
  • 重庆网红景点“莲花茶摊”被市民投诉,官方:采纳意见,整改!
  • 见微知沪|让民营企业与城市共成长,上海拿出“三件宝”
  • 让观众从演唱会现场走到商场,上海虹口构建“票根经济”生态链
  • 河南省委书记人民日报撰文:坚定不移贯彻总体国家安全观,为谱写中国式现代化河南篇章提供安全保障
  • 沪克航旅推介会举行,年底前东航将开通上海-克拉玛依直达航班
  • 东南亚三国行第二日|两国领导人共同出席中越铁路合作机制启动仪式,越南之行圆满结束