首页 > 数据库 >一对多数据的多选筛选([EF,ABP]但是sql思路通用)

一对多数据的多选筛选([EF,ABP]但是sql思路通用)

时间:2023-05-14 22:56:55浏览次数:28  
标签:EF new ABP num Construction sql input Rid

一对多数据的多选筛选([EF,ABP]但是sql思路通用)

标题起的并不是特别准确,但是现在又没有更加准确的描述,暂时这样了

业务需求:

数据格式为一条数据,对应多条二级数据,暂时表示为主信息为“书”,二级为他的各种描述信息:1.社会科学-学术类-自定义文字,2.科技信息-学术类-自定义文字,然后搜索即是社会科学又是科技信息的数据。有点ES的味道了,但是小项目,不用太大组件,于是想办法SQL语句解决。如下为EF的解决办法

代码如下:

input.Construction = input.Construction.Distinct().ToList();//去除重复,防止脏数据
int num=input.Construction.Count ;//获取数量
var query2 = _bookInfoRepository.GetAll()
    .Where(m => input.Construction.Contains(m.Code))//获取所有关联的
    .GroupBy(m => new { m.Code, m.Rid })    //分组获取不重复的数据
    .Select(m => new { m.Key.Rid, m.Key.Code })
    .GroupBy(m => new { m.Rid })       //再次分组,用于获取不重复的数量
    .Select(m => new { m.Key.Rid, num = m.Count() })
    .Where(m => m.num == num)          //当数量一致的时候,即为包含所有类型子级的信息
    .Select(m => m.Rid);               //获取父级的ID

var list = query
    .Join(query2, m => m.Id, n => n, (m, n) => m) //通过左连接关联,获取到所有的主数据
    .OrderBy(m => m.Id)
    .ToPagedList(input.page, input.length);

标签:EF,new,ABP,num,Construction,sql,input,Rid
From: https://www.cnblogs.com/itljf/p/17400489.html

相关文章

  • MySQL学习日志十三,索引
    一、索引的作用1.提高查询速度2.确保数据的唯一性3.可以加速表和表之间的连接,实现表与表之间的参照完整性4.使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间5.全文检索字段进行搜索优化.二、分类1.主键索引(PrimaryKey)2.唯一索引(Unique)3.常规......
  • MySQL学习日志十二,事务
    一、事务要么都成功,要么都失败四个特性:原子性:不可再分割的工作单位,一个事务中要么都完成,要么都不完成一致性:从一致的状态转换到另一个一致的状态,事务前后的数据保持一致隔离性:屏蔽其他的事务,专注自己的事务,互不干扰持久性:存储在数据库的数据是永久的,事务一旦提交就不......
  • MySQL学习笔记:mycat2原理与实现
    mycat2官网:MyCat2(mycatone.top)参考学习视频这可能是B站唯一把数据库中间件Mycat2讲的如此深入透彻的教程!_哔哩哔哩_bilibili什么是mycat2?Mycat是开源社区在阿里Cobar基础上进行二次开发的数据库中间件,也是目前最流行的基于java语言编写的数据库中间件;是一个开源的分布式数据......
  • Codeforces Round 869
    \(\texttt{A.AlmostIncreasingSubsequence}\)把\(a_i>a_{i+1}\)的极长下降区间称为一个段,那么显然,一个长度为\(len\)的极长下降区间最多选\(\min(2,len)\)个,并且可以达到这个数,因此记录每个位置属于哪个段,记录个前缀和就好了。#include<bits/stdc++.h>usingnamespaces......
  • LabVIEW数据库Mysql数据库操作;增加-删除-更新-查询;数据管理程序,完整案例,可移植。
    LabVIEW数据库Mysql数据库操作;增加-删除-更新-查询;数据管理程序,完整案例,可移植。ID:9299673612213945......
  • Labview工业以太网Ethernetip TCP通讯培训支持所有Ethernetip协议的设备和模块常用罗
    Labview工业以太网EthernetipTCP通讯培训支持所有Ethernetip协议的设备和模块常用罗克韦尔ABPLC,欧姆龙NXNJPLC数据标签通讯让你从原理上学会从此定值自己的通讯协议ID:46399669472727510......
  • MySQL学习日志十一,常用函数,聚合函数及分组过滤,数据库级别的MD5加密
    点我跳转到菜鸟的函数总结在这里举几个例子吧--数学运算SELECTABS(-52)--取绝对值SELECTCEILING(5.4160)--向上取整SELECTFLOOR(4631.449613)--向下取整SELECTRAND()--返回一个0-1之间的随机数SELECTSIGN(-4510)--判断数字的正负,正数返回1,负数返回-1一堆......
  • 【MySQL--08】复合查询
    【MySQL--08】复合查询在之前我们对表的查询都是对一张表进行查询,再实际开发中这还远远不够。我们仍然使用雇员信息表scott_data.sql--使用source加上sql文件路径就可以讲表加入到数据库内--mysql>source/home/Lxy/mysql/mysql/lesson8/scott.sqlQueryOK,0rowsaffected......
  • defer有什么用呢
    1.简介本文将从一个资源回收问题引入,引出defer关键字,并对其进行基本介绍。接着,将详细介绍在资源回收、拦截和处理panic等相关场景下defer的使用。进一步,介绍defer的执行顺序,以及在注册defer函数时,其参数的求值时机等相关特性。最后,重点讲解defer的注意点,如在defer中函数中需要......
  • C# opc ua客户端实例源码,带ef6+sqlite。 代码有完整的注解,及包括所有
    C#opcua客户端实例源码,带ef6+sqlite。代码有完整的注解,及包括所有的链接库和程序结构思维图。纯学习资料YID:2855638904489888......