当前位置: 首页 > 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

http://www.xdnf.cn/news/36271.html

相关文章:

  • 红黑树模拟实现STL中的map和set---C++
  • ThingsBoard3.9.1 MQTT Topic(3)
  • 【入门】数数小木块
  • OpenFeign终极指南:超时控制、重试策略、拦截器与自定义Starter
  • Stable Diffusion秋叶整合包V4独立版Python本地API连接指南
  • 《Operating System Concepts》阅读笔记:p738-p747
  • 《C#数据结构与算法》—集合、映射
  • 基于Spring AI与OpenAI API的深度实践:调用DeepSeek模型构建智能应用全指南
  • Win10驱动程序强制签名怎么禁用/开启?
  • C++按位与()、按位或(|)和按位异或(^)
  • 并发网路通信-套接字通信
  • 【数学】数学分类
  • 日志分析---宝瓜Windows日志分析器
  • 什么是 Stream
  • Vue3 + TypeScript中defineEmits 类型定义解析
  • [oeasy]python089_列表_删除列表项_remove_列表长度_len
  • 纯FPGA实现驱动AD9361配置的思路和实现之一 概述
  • 从数据处理方式,系统可扩展性和处理性能三方面比较管道过滤器风格和仓储风格
  • Python Requests 库:从安装到精通
  • Dijkstra 算法
  • 蓝桥杯练习题2
  • 深入理解 Spring 单元测试:@SpringBootTest、@Value 注入、@MockBean 使用实战与陷阱
  • 计算机网络八股——HTTP协议与HTTPS协议
  • Python爬虫-爬取猫眼演出数据
  • DataWhale AI春训营 问题汇总
  • 3. 在 2节的基础上 ,实现launch文件简单编写
  • MySql Innodb存储引擎下sql优化
  • 【leetcode刷题日记】lc.322-零钱兑换
  • 自动驾驶---决策规划之导航增强端到端
  • [CPP6] string模拟实现