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

标签: c# linq include let


【解决方案1】:

未使用的let 语句应该不会影响您的查询。

为了确定,打开登录并在控制台输出中亲自查看生成的 TSQL 对于两个查询是相同的:

myContext.Log = Console.Out;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    相关资源
    最近更新 更多