LINQ左连接

article/2025/8/17 17:08:27

title: linq左连接
date: 2021-12-05 08:45:48
tags: C# Linq


LINQ语言继承查询

近日项目实践中遇到这样的一个事情。在一个项目需求里存在这么一个情况,有以下一个主表与几个基础数据表组成一个大表,要求主表中的有的数据必须展示出来,但大表(即主表与基础数据表组成的表中存在部分数据项为空的情况)通常:连接多表进行查询的时候,使用join a inb.mid equals b.mid

SQL server数据表查询

# 使用全连接的方式(查询出的结果,只有两个表都匹配的结果)
select * from S_FlightDetails #查询主表中的所有数据图一
select * from S_FlightDetails as flight,S_FlightTransit as transit
where flight.FlightDetailsID = transit.FlightDetailsID #条件查询的大表数据,图二
# sql servers 全内连接,结果如图二
select * 
from S_FlightDetails as flight inner join  S_FlightTransit as transit on transit.FlightDetailsID = flight.FlightDetailsID
# sql servers 左连接,结果如图三
select * 
from S_FlightDetails as flight left join S_FlightTransit as transit on transit.FlightDetailsID = flight.FlightDetailsID

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JNcmOkmy-1638927901542)(D:\Blog\source_posts\linq左连接\image-20211208082557063.png)]
请添加图片描述
图一sql servers 查询主表所有数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iKA7SO7S-1638927901542)(D:\Blog\source_posts\linq左连接\image-20211208082414882.png)]

请添加图片描述

图二sql 条件查询全内连接查询结果。两张表进行数据匹配

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HIAiD1PU-1638927901543)(D:\Blog\source_posts\linq左连接\image-20211208083744160.png)]
请添加图片描述
图三sql左连接查询结果,不过如何主表中有的数据一定有,不管右表的数据是否存在

LiNQ左连接查询

在数据库中的sql server可以使用左连接来实现我所需要的结果,那么在项目中的使用LINQ进行左连接也能实现该效果。

// Program.cs 引用命名空间
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
//主查讯方法
public static void Main(string[] args){list<FlightVo>  =(from a in model.FlightDeailsjoin b in model.FlightTransit on a.FlightDetailsID equals b.FlightDetailsIDselect new FlightVo{//略};) 
}			

使用该方法等同于sql server 中的全内连接

LINQ中没有直接以Left join的方式实现左连接的,而是使用DefaultIfEmpty空默认。如果该表中的数据没有数据返回空

public ActionResult QureFlight(){List<FlightVo> listFlight = (from tbFlightDetails in myModels.S_FlightDetailsjoin tbFlightTransit in myModels.S_FlightTransit.DefaultIfEmpty() on tbFlightDetails.FlightDetailsID equals tbFlightTransit.FlightDetailsIDselect tbFlightDetails).toList();                               
} 

请添加图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nEh0FsI7-1638927901546)(D:\Blog\source_posts\linq左连接\image-20211208091411223.png)]

使用DefaultIfEmpty的方式,判断表中数据是否为空。实现效果如sql server中的左连接查询。

总结

在一些复杂情况下,数据库中的数据并不全然相对,存在主表中存在相关数据,而副表中并没有有关数据的情况。这是往往需要以某个表为主,即便副表中没有存在相关数据也要将所有的数据进行展示时往往需要全部的数据,这是以某一张表为主的表,以该表为主向左或右连接,sql中用到左连接或是右连接。在LINQ中,忽略左右,更为直观。存在显示不存在不显示。


http://chatgpt.dhexx.cn/article/wWvB5yon.shtml

相关文章

ClickHouse左连接

A左连接B>S1区域 1、等价方式一 SELECT date, ts, country, province, city,ye_no FROM (SELECT date, ts, country, province, city,0 AS yes_no FROM DBa.tba WHERE (date today()-1) ) ALL LEFT JOIN (SELECT date, ts, country, province, city FROM DBb.tbb WH…

【Mysql】图解左、右、内与全连接

一、前言 使用学生表与成绩表来演示Mysql中的各种连接查找 学生表的建表语句如下&#xff1a; CREATE TABLE student(id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增序号,st_id int(11) DEFAULT NULL COMMENT 学生id,st_name varchar(255) DEFAULT NULL COMMENT 学生姓名…

使用VC和MATCOM结合开发应用程序心得笔记

使用VC和MATCOM结合开发应用程序心得笔记1. 什么是Matcom?Matcom是MathTools公司(UPenn)开发的一个基于C矩阵函数库Matrix的一个matlab m文件与cpp文件的转换程序。MIDEVA为他的一个集成调试编译环境(界面)。Matcom独立于matlab之外&#xff0c;但需要外部的c编译器&…

MATLAB与VC混合编程(1)

在本节中先介绍matcom&#xff0c;使得VC能调用Matlab 的M文件&#xff0c;从而实现混合编程。 Matcom是mathTools公司推出的一个能将M文件转化成相同功能C代码的工具。相比Matlab自带的编译器Compiler&#xff0c;用Matcom转化代码要简单和方便得多。以VC6.0和Matcom为例&…

利用Matcom实现基于MATLAB的混合编程

利用Matcom实现基于MATLAB的混合编程 来源: 神经网络 作者&#xff1a;AI俱乐部 网友评论 0 条 浏览次数 42 <script> remark_look(re_look.php?cid17&tid1843); </script> Matcom是mathTools公司推出的最早的Matlab到C的编译器。后来&#xff0c;由于Mathto…

深度学习(十二):Matconvnet小试牛刀与提特征

该节简单介绍一下如何使用Matconvnet的现有的模型进行图像分类实验以及提取图像对应层的特征。 先来看看如何用训练好的imagenet网络模型进行图像的预测&#xff0c;英文版的官网教程就在这里&#xff1a; http://www.vlfeat.org/matconvnet/quick/ 检测图像分类之前&#x…

项目总结四:神经风格迁移项目(Art generation with Neural Style Transfer)

1、项目介绍 神经风格转换 (NST) 是深部学习中最有趣的技术之一。它合并两个图像, 即 内容图像 C&#xff08;content image&#xff09; 和 样式图像S&#xff08;style image&#xff09;, 以生成图像 G&#xff08;generated image&#xff09;。生成的图像 G 将图像 C 的 内…

Matconvnet学习笔记

Introduction to Matconvnet MatConvNet是实现用于计算机视觉领域的卷积神经网络(CNN)的MATLAB工具箱。自从取得突破性工作以来,CNN在计算机视觉领域有一个重大影响&#xff0c;特别是图像理解&#xff0c;基本上取代了传统图像表示。有许多其他机器学习、深度学习和CNN开源库的…

20190812_解决anaconda下install库的问题

20190812_解决anaconda下install库的问题 一、起因二、开始解决三、解决方法1 创建虚拟环境2 在环境中安装库3 重新配置pycharm中的解释器4 运行5 其他 一、起因 在学习PYQT5例子时&#xff0c;需要在anaconda下使用plotly库 二、开始解决 使用&#xff1a; conda install …

matlab已停止工作 win7 64,win7系统笔记本运行软件弹出“Matlab已停止工作”的解决方法...

很多小伙伴都遇到过win7系统笔记本运行软件弹出“Matlab已停止工作”的困惑吧&#xff0c;一些朋友看过网上零散的win7系统笔记本运行软件弹出“Matlab已停止工作”的处理方法&#xff0c;并没有完完全全明白win7系统笔记本运行软件弹出“Matlab已停止工作”是如何解决的&#…

Map遍历方法及效率

在大学的时候记得学过通过迭代器进行Map的遍历&#xff0c;但是从参加工作后&#xff0c;基本都是通过for循环遍历&#xff0c;没用过迭代器&#xff0c;于是去了解了Map的几种遍历方法并通过运行测试各自的速度。 注意&#xff1a;这里只讲通过遍历同时能过获取key和value的遍…

java map集合如何遍历效率高 java中Map遍历的方式

java map集合如何遍历效率高 java中Map遍历的方式 一、前言 1、在看 《阿里巴巴java开发手册》时候&#xff0c;有一条推荐的规约&#xff1a; 【推荐】使用entrySet遍历Map类集合KV&#xff0c;而不是keySet方式进行遍历。 说明&#xff1a;keySet其实是遍历了2次&#xff0c…

【Java】Map遍历key-value的四种方法

Map遍历key-value的四种方法 &#xff08;1&#xff09;先用keySet()取出所有key值&#xff0c;再取出对应value——增强for循环遍历 &#xff08;2&#xff09;先用keySet()取出所有key值&#xff0c;再取出对应value——使用迭代器遍历 &#xff08;3&#xff09;通过entryS…

SVM——核函数

我们知道&#xff0c;SVM相对感知机而言&#xff0c;它可以解决线性不可分的问题&#xff0c;那么它是怎么解决的呢&#xff1f;它的解决思想很简单&#xff0c;就是对原始数据的维度变换&#xff0c;一般是扩维变换&#xff0c;使得原样本空间中的样本点线性不可分&#xff0c…

SVM核函数概述

特征空间的隐式映射&#xff1a;核函数 咱们首先给出核函数的来头&#xff1a;在上文中&#xff0c;我们已经了解到了SVM处理线性可分的情况&#xff0c;而对于非线性的情况&#xff0c;SVM 的处理方法是选择一个核函数 κ(⋅,⋅) &#xff0c;通过将数据映射到高维空间&#x…

聚类算法之核函数

一&#xff1a;监督学习与无监督学习 1&#xff0c;监督学习 监督学习就是人们常说的分类&#xff0c;通过训练已有样本得到一个最优模型&#xff0c;利用该模型将输入转化成输出&#xff0c;对输出进行判断&#xff0c;从而实现分类&#xff0c;也就是具有了对未知数据进行分类…

svm核函数的理解和选择

特征空间的隐式映射&#xff1a;核函数 咱们首先给出核函数的来头&#xff1a;在上文中&#xff0c;我们已经了解到了SVM处理线性可分的情况&#xff0c;而对于非线性的情况&#xff0c;SVM 的处理方法是选择一个核函数 κ(⋅,⋅) &#xff0c;通过将数据映射到高维空间&#x…

matlab rbf核函数,四类核函数(Sigmoid+RBF)

Q:有个疑问就是,模型本身不是线性的,为什么一定要先用线性模型做? A:有核函数和泰勒展开等等,可以无限逼近转化成线性? 小知识: 1.Sigmoid函数,即f(x)=1/(1+e-x)。是神经元的非线性作用函数。广泛应用在神经网络中。又叫Logistic函数。 机器学习中一个重要的预测模型逻辑…

SVM的核函数详解

文章目录 1、核函数背景核函数正式定义 2、高斯核函数2.2 参数带宽 σ \sigma σ的影响2.3高斯核函数的实际意义 2、多项式核函数4、参考资料 1、核函数背景 本文为核函数进阶教程&#xff0c;希望看文章之前最好对核函数有一些最基本的了解&#xff0c;不然有些地方可能会看不…

常见核函数

这篇博文开始的例子就很好地揭示了核函数的简单原理&#xff0c;写得很好&#xff01; 原地址&#xff1a;https://blog.csdn.net/zkq_1986/article/details/52448238 1 核函数K&#xff08;kernel function&#xff09;定义 核函数K&#xff08;kernel function&#xff09;就…