首页 > 其他分享 >【Linq】 左连接、右连接、内链接

【Linq】 左连接、右连接、内链接

时间:2023-04-01 14:00:28浏览次数:54  
标签:表格 元素 Linq 链接 Stockid 集合 连接 DefaultIfEmpty

左外部联接

可以看到和直接内连接的join差距在多了into,把可能为空的那个集合(表)放到一个集合,然后再对接进行DefaultIfEmpty(),再从这个结果中去取

 

 


 stocksinfo表格

 

 

 

packetassociationstocks 表格

实现 stocksinfo表格 和packetassociationstocks 表格 的左外连接,并且选择 Join后的前10条记录

    /// <summary>
        ///  为指定的板块添加股票
        /// </summary>
        /// <param name="blockID">板块id</param>
        /// <param name="keyword">查找关键词</param>
        /// <returns></returns>
        public async Task<ObservableCollection<StockPOCO>?> GetStocksForPacketAsync(int blockID,string keyword)
        {
            ObservableCollection<StockPOCO>? coll = new();
            //选取股票名称或者名字 保护指定关键词的 选取前十条记录
            var content = (from A in dataContext.Stocksinfos
                           join B in dataContext.Packetassociationstocks on A.Stockid equals B.Stockid into prodGroupList
                           from C in prodGroupList.DefaultIfEmpty()//DefaultIfEmpty()实现左外连接
                           where A.Stockid.Contains(keyword) || A.Name.Contains(keyword)// 筛选 表格A,切记不是筛选prodGroupList
                           select new StockPOCO{ StockID= A.Stockid,  Name= A.Name, HadAdded= C.Isselected==1 }
                          ).Take(10).ToList();
            return new ObservableCollection<StockPOCO>(content);
        }

解说:

第一步是使用分组联接执行内联。

在关系数据库术语中,内部联接会生成一个结果集,在该结果集中,第一个集合的每个元素对于第二个集合中的每个匹配元素都会出现一次。 如果第一个集合中的元素没有匹配元素,则它不会出现在结果集中。

第二步是在结果集内包含第一个(左)集合的每个元素,即使该元素在右集合中没有匹配的元素也是如此。 这是通过对分组联接中的每个匹配元素序列调用 DefaultIfEmpty 来实现的。

重点就是into到集合,再DefaultIfEmpty()

 

标签:表格,元素,Linq,链接,Stockid,集合,连接,DefaultIfEmpty
From: https://www.cnblogs.com/cdaniu/p/17278528.html

相关文章

  • 《Mysql基础》【Mysql表查询、去重、表连接、左连接 右连接、子表查询、排序、分组等
     --mysql数据库程序设计笔记:第三章:查询1、单表查询:1)、简单查询查所有列:格式:select*from表名;举例:mysql>select*fromtb_student;+----+-----------+-------------+------+------------+----------+--------+---------+-------------------+|id|studentNo|s......
  • Spatial Join,空间连接
    WelearnedhowtousetheSpatialJointooltoattachinformationfromoneattributetabletoanotherbasedonthespatialrelationshipofthefeaturesinvolved.Itisaveryusefultoolthatcanhelppeopleworkefficiently.However,Iamnotveryfam......
  • 【Azure 应用服务】Function App / App Service 连接 Blob 报错
    问题描述因Blob启用了防火墙功能,但是当把AppService或FunctionApp的出站IP地址都加入到Blob的白名单中,为什么访问还是403错误呢? 问题解答AzureStorage的IP网络规则不适用于同一数据中心的客户端。存储帐户部署在同一区域中的服务使用专用的AzureIP地址进行通信。因此,不......
  • go创建文件的软链接,不支持windows
    funcmain(){err:=os.Symlink("/data/da","/home/go/da")iferr!=nil{fmt.Println(err)//即使是错误也不退出}err=os.Remove("/home/go/da")iferr!=nil{fmt.Println("/home/go/dafileisremove",......
  • HikariCP连接池设置和监控
    调整pool参数SpringBoot项目默认自动使用HikariCP,最近为了进行数据库session控制,特意调小了缺省的poolSize,原本以为会自动生效,经过压测发现还是使用默认的poolSize.原来的代码DataSource对象使用的是SpringDataSourcebuilder创建的,需要修改为HikariDataSour......
  • linux连接终端工具
    linux连接终端工具:electerm:https://github.com/electerm/electermhttps://electerm.github.io/electerm/MobaXterm:https://mobaxterm.mobatek.net/功能十分强大,支持SSH,FTP,串口,VNC,Xserver等功能;支持标签,切换也十分方便;可视化目录直接上传下载:注:不能支持szrz命令,可以......
  • Oracle Docker安装及连接
    OracleDocker安装及连接拉取镜像运行镜像进入容器修改oracle配置修改root密码passwd切换oracle用户suoracle匿名登录oraclesqlplus/nologdba身份登录conn/assysdba修改用户system、sys用户的密码alterusersystemidentifiedbysystem;alterus......
  • Go 连接数据库的增删改查
    packagemainimport("database/sql""fmt"_"github.com/go-sql-driver/mysql")vardb*sql.DBfuncinitDB()(errerror){dsn:="root:123456@tcp(127.0.0.1)/ssmd"db,err=sql.Open("mys......
  • chatGPT----链接大全
      OpenAI:https://openai.com/blog/chatgpt/百度文心:https://wenxin.baidu.com/CSDN(调用text-davinci-003模型):https://so.csdn.net/so/chatNewBing:https://www.bing.com/newChatGPT官网:https://chat.openai.comChatGPT注册:https://ata.alibaba-inc.com/articles/253211......
  • zabbix监控tcp连接数脚本
    1、添加脚本[root@localhost]#vim/etc/zabbix/zabbix_agent2.d/plugins.d/check_tcp.sh#!/bin/bashNAME=$1functionLISTEN{netstat-an|grep'LISTEN'|greptcp|wc-l}functionESTABLISHED{netstat-an|grep'ESTABLISHED'|greptcp|wc-l}......