c# - linq 是返回整个数据源还是只返回指定的选择列?
问题描述
给定这样的查询:
var myThingy =>
(from rg in _repository.GetQueryable<TheThing>()
where rg.Id == someId
select rg);
var myThingysId =>
(from rg in _repository.GetQueryable<TheThing>()
where rg.Id == someId
select rg.Id);
在第一个中,我要求完整的 TheThingy,而在第二个中,只有它的 ID。
我想知道的是它们都会产生相同的 SQL 查询吗?
解决方案
Linq 在第一种情况下返回整个数据源(所有列) -
林克代码:
from t in Persons select t
生成的 SQL:
SELECT [t0].[PersonID], [t0].[FirstName], [t0].[LastName] FROM [Person] AS [t0]
并在第二种情况下仅返回指定的列 -
林克代码:
from t in Persons select new {t.PersonID}
生成的 SQL:
SELECT [t0].[PersonID] FROM [Person] AS [t0]
推荐阅读
- spring - kuberntes 上的 Hazelcast 管理中心
- go - 有没有办法为从 proto 文件生成的代码定义导入别名
- python - Pandas:数据框根据条件丢弃数据
- php - Wordpress:获取与另一个分类相关的分类计数
- filter - 在powerBI中移动框的位置
- firebase - Firebase 消息在令牌刷新和多台设备同步后订阅主题
- lua - Love2d “'draw' 的错误论点 #2(预期为四,结果为零)”
- html - 加载图像 SVG 并获取内容安全策略 (CSP) 错误
- google-apps-script - Google 表格插件未触发 GTM 中的自定义事件
- python - 接收 'list' 对象没有属性 'groupby' 不知道为什么