当前位置:网站首页>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接口

边栏推荐
- 关于#sql#的问题:该怎么写sql语句,
- VPS8701 电源管理(PMIC) VPS8701
- 2W字!详解20道Redis经典面试题!(珍藏版)
- aws s3 upload file
- WebShell Feature Value Summary and Detection Tool
- OperatingSystemMXBean to get system performance metrics
- Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
- * Compare version numbers
- AcWing 1053. Repair DNA problem solution (state machine DP, AC automata)
- ReentrantLock工作原理
猜你喜欢
随机推荐
【无标题】【Koltin Flow(三)】Flow操作符之中间操作符(二)
【Koltin Flow(三)】Flow操作符之中间操作符(一)
【LeetCode】20.有效的括号
VPS8702 VPSC(源特科技)电源管理(PMIC) 封装SOT23-6
VPS8505 微功率隔离电源隔离芯片 2.3-6V IN /24V/1A 功率管
第 304 场力扣周赛
VPS8504C 微功率隔离电源隔离芯片 VPSC源特科技
# ODS及DWD层自动化构建##, 220731,
AcWing 1285. 单词 题解(AC自动机)
analog IC layout
MySQL中根据日期进行范围查询
7-40 奥运排行榜 (25 分)多项排序
Heao Technology Network Interview (with reference answers)
Go语学习笔记 - gorm使用 - gorm处理错误 Web框架Gin(十)
aws s3上传文件
利用WebShell拿Shell技巧
OperatingSystemMXBean获取系统性能指标
Chrome浏览器无法加载已解压的.crx文件的解决办法
ReentrantLock工作原理
leetcode 143. 重排链表









