【发布时间】: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" 根本不应该修改行为..所以也许这是您查询的其他内容?你能添加整个查询吗?也许这样我们就可以理解为什么会发生..