当前位置:网站首页>EF Core:基于关系的复杂查询 区分IEnumerable和IQueryable
EF Core:基于关系的复杂查询 区分IEnumerable和IQueryable
2022-08-02 03:01:00 【董厂长】
基于关系的复杂查询
表结构描述:一个文章带有多个评论,现在想输出所有,评论中带“微软”的文章。换句话说开,只要这个文章中的评论带这个词,就放入集合中去。
基于EF Core的实体间关系配置,我们不仅可以让数据的插入、获取等变得非常方便,而且让基于关系的过滤条件的时间也变得非常简单。
(where相当于条件过滤)
ctx.Articles.Where(a=>a.Comments.Any(c=>c.Message.Contains("微软")));
其底层的sql语句:
变换成另一种写法。
ctx.Comments.Where(c => c.Message.Contains("微软"))
.Select(c => c.Article).Distinct();
(SELECT DISTINCT 排除重复 表示查询结果中,去掉了重复的行)
其底层的sql,用join来实现:
同样效果的代码可能有多种写法,有时候要关注底层的SQL,看哪种方式最好。
区分IEnumerable和IQueryable
1、对普通集合和DbSet调用的Where方法,虽然用起来一样,但是“转到定义”后看到的是不同的方法。
2、普通集合的版本(IEnumerable)是在内存中过滤(客户端评估),而IQueryable版本则是把查询操作翻译成SQL语句(服务器端评估)。
IQueryable实现了IEnumerable接口
边栏推荐
- leetcode 143. 重排链表
- MySQL8.0.26安装配置教程(windows 64位)
- R16 Type II量化反馈码本的产生
- 2022年最新一篇文章教你青龙面板拉库,拉取单文件,安装依赖,设置环境变量,解决没有或丢失依赖can‘t find module之保姆教程(附带几十个青龙面板脚本仓库)
- PHP WebSehll backdoor script and detection tool
- iVX低代码平台系列详解 -- 概述篇(二)
- ROS2自学笔记:launch文件完整编写流程
- 非稳压 源特电子 隔离电源模块芯片 5W VPS8504B 24V
- 精益思想如何加速企业的全局价值流动?
- Reasons and solutions for Invalid bound statement (not found)
猜你喜欢
随机推荐
ReentrantLock工作原理
WebShell连接工具(中国菜刀、WeBaCoo、Weevely)使用
iVX低代码平台系列详解 -- 概述篇(二)
Webshell上传方式
PyTorch(六)——PyTorch可视化
svm.SVC应用实践1--乳腺癌检测
* 比较版本号
- daily a LeetCode 】 【 9. Palindrome
JSP Webshell 免杀
Navicat cannot connect to database Mysql because of WiFi
SSM网上商城购物系统(前台+后台)
递归检查配置项是否更变并替换
JSP Webshell free kill
Go语学习笔记 - gorm使用 - 原生sql、命名参数、Rows、ToSQL Web框架Gin(九)
Go语学习笔记 - gorm使用 - 表增删改查 Web框架Gin(八)
AcWing 1053. 修复DNA 题解(状态机DP、AC自动机)
7-41 PAT排名汇总 (25 分)多样排序
MySQL中的存储过程(详细篇)
第 304 场力扣周赛
直击程序员面试现场:百度面试官都问了我些啥?