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

C#两个表多条件关联写法

文章目录

  • C#两个表多条件关联写法
    • 两个表实体类准备
    • 实体类数据初始化
    • 第一种 sql的左关联
    • 第二种相当于sql的 INNER JOIN
      • 写法一:FROM a FROM b where 多条件关联
      • 写法二: FROM JOIN INTO
      • 写法三: FROM JOIN 省略into

C#两个表多条件关联写法

两个表实体类准备

 public class OtherIn{public string AfterOrderNo { get; set; }public long MaterialId { get; set; }public string MaterNumber { get; set; }public long Qty { get; set; }public string Note { get; set; }}public class AfterInfo{public string AfterOrderNo { get; set; }public long MaterialId { get; set; }public string MaterNumber { get; set; }public long AfterQty { get; set; }public string Note { get; set; }}

实体类数据初始化

List<OtherIn> getOtherInGroup = new List<OtherIn>();getOtherInGroup.Add(new OtherIn { AfterOrderNo= "SH231025001",MaterialId=100001,MaterNumber="CTG001",Qty=2});getOtherInGroup.Add(new OtherIn{AfterOrderNo = "SH231025001",MaterialId = 100002,MaterNumber = "CTG002",Qty = 3});getOtherInGroup.Add(new OtherIn{AfterOrderNo = "SH231025002",MaterialId = 100002,MaterNumber = "CTG002",Qty = 4});List<AfterInfo> getAfterGroup = new List<AfterInfo>();getAfterGroup.Add(new AfterInfo {AfterOrderNo = "SH231025002",MaterialId = 100002,MaterNumber = "CTG002",AfterQty = 5});getAfterGroup.Add(new AfterInfo{AfterOrderNo = "SH231025001",MaterialId = 100001,MaterNumber = "CTG001",AfterQty = 1});

第一种 sql的左关联

FROM a JOIN b on 组合键关联 into 临时表 from 临时表(左关联不上右边默认为空)

  var getExcessGroup = from a in getOtherInGroupjoin b in getAfterGroup on new { a.AfterOrderNo, a.MaterialId } equals new { b.AfterOrderNo,b.MaterialId }into resultfrom c in result.DefaultIfEmpty()select new{AfterOrderNo = a.AfterOrderNo,MaterialId=a.MaterialId,Qty = a.Qty,AfterQty = c == null ? 0 : c.AfterQty};

结果
在这里插入图片描述

第二种相当于sql的 INNER JOIN

写法一:FROM a FROM b where 多条件关联

 var getExcessGroup2 = from a in getOtherInGroupfrom b in getAfterGroupwhere a.AfterOrderNo == b.AfterOrderNo && a.MaterialId == b.MaterialIdselect new{AfterOrderNo = a.AfterOrderNo,MaterialId = a.MaterialId,Qty = a.Qty,AfterQty = b == null ? 0 : b.AfterQty};

结果
在这里插入图片描述

写法二: FROM JOIN INTO

FROM a JOIN b on 组合键关联 into 临时表 from 临时表(不默认为空)

var getExcessGroup1 = from a in getOtherInGroupjoin b in getAfterGroup on new { a.AfterOrderNo, a.MaterialId } equals new { b.AfterOrderNo, b.MaterialId }into resultfrom c in resultselect new{AfterOrderNo = a.AfterOrderNo,MaterialId = a.MaterialId,Qty = a.Qty,AfterQty = c == null ? 0 : c.AfterQty};

结果
在这里插入图片描述

写法三: FROM JOIN 省略into

var getExcessGroup11 = from a in getOtherInGroupjoin b in getAfterGroup on new { a.AfterOrderNo, a.MaterialId } equals new { b.AfterOrderNo, b.MaterialId }select new{AfterOrderNo = a.AfterOrderNo,MaterialId = a.MaterialId,Qty = a.Qty,AfterQty = b.AfterQty};

结果
在这里插入图片描述

http://www.lryc.cn/news/210677.html

相关文章:

  • VSCode-C/C++环境配置
  • 第八周实验记录
  • Spring Cloud Alibaba Seata 实现 SAGA 事物
  • npm install报错,解决记录
  • LSM树原理详解
  • Linux系统编程_网络编程:字节序、socket、serverclient、ftp 云盘
  • 队列(8.6)
  • 计算机网络 第四章网络层
  • 操作系统运行机制
  • mathtype7.4破解永久激活码
  • 66 内网安全-域横向批量atschtasksimpacket
  • PCI9054入门1:硬件引脚定义、时序、FPGA端驱动源码
  • 多媒体应用设计师 第17章 多媒体应用场景的技术应用和实现示例
  • react151618刷新几次的问题
  • 【Spring】IOC容器与Bean的常用属性配置
  • 2023年下半年 系统集成项目管理工程师 真题考点(一二三四批次)(10月28、29)(网友回忆版)
  • 读韩都衣舍,谈权力转移的激励制度
  • 私有云:【10】VCenter安装win10
  • [Java/力扣100]判断两棵二叉树是否相同
  • BEC商务英语主题 定价策略|柯桥学商务英语口语
  • 第七章 ObjectScript 一般系统限制
  • 【Python百练——第1练】使用Python求100以内的所有偶数
  • springboot心理咨询管理系统
  • Java-API简析_java.net.URL类(基于 Latest JDK)(浅析源码)
  • C语言浮点型在内存中的存储
  • elementPlus | el-tabs 标签管理路由页面
  • 如何使用ffmpeg制作透明背景的视频
  • C#中对于using的使用方式
  • 【Java】HashMap集合
  • 百度网盘使用指南