linq 查询:让包含语句
Posted
技术标签:
【中文标题】linq 查询:让包含语句【英文标题】:linq query : let with include statement 【发布时间】:2013-12-19 20:21:31 【问题描述】:当我执行这个请求时
var req = (from A in _context.STUDENT.Include("RESULT")
select A).ToList();
我有预期的结果:对于每个学生,我都有一些结果
但是当我添加如下 let 语句时,对于每个学生,我有 0 个结果
var req = (from A in _context.STUDENT.Include("RESULT")
let b = 1
select A).ToList();
我做错了什么还是已知问题或其他什么?
【问题讨论】:
好吧,理论上let
是无操作的,因为你从不使用b
做任何事情。 (请注意,第一个查询还执行身份选择,这不会产生任何效果。)我猜您对它的使用会以某种方式混淆查询提供者。你到底想在这里做什么?
我的真实查询更复杂。我在 where 子句的 let 语句中使用变量。但为了简化,我以这个模拟查询为例。
您不认为 where 子句是需要添加的重要信息吗?很可能 where 子句是返回 0 结果的原因,而不仅仅是您的示例所暗示的包含 let 语句。
您使用的是什么 linq 提供程序?您可能想用实体框架等标记您的问题,因为它们的操作方式不同。我无法想象这是一个 linq-to-objects 问题。
"let" 根本不应该修改行为..所以也许这是您查询的其他内容?你能添加整个查询吗?也许这样我们就可以理解为什么会发生..
【参考方案1】:
未使用的let
语句应该不会影响您的查询。
为了确定,打开登录并在控制台输出中亲自查看生成的 TSQL 对于两个查询是相同的:
myContext.Log = Console.Out;
【讨论】:
以上是关于linq 查询:让包含语句的主要内容,如果未能解决你的问题,请参考以下文章