- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码,通过 LEFT JOIN 查询一些数据:
Model1 db = new Model1();
db.Database.Log = System.Console.Write;
var x = from e in db.Employees
where e.id == 746
join f in db.Company on e.CompanyID equals f.ID into fa
from fr in fa.DefaultIfEmpty()
select new
{
e.id,
e.name,
companyName = fr.name
};
x.Any(); // to see the query in console
此处使用的类由 Visual Studio 向导生成,以确保模型和数据库上下文代码正确。
当我在 LINQpad 中运行该代码时,SQL 查询如下所示
SELECT [t0].[id] AS [id], [t0].[name] AS [name], [t1].[name] AS [companyName]
FROM [Employees] AS [t0]
LEFT OUTER JOIN [Company] AS [t1] ON [t0].[CompanyID] = [t1].[ID]
WHERE [t0].[id] = 1615
但是当我在一个简单的控制台应用程序中运行代码时,我得到以下完全错误的神秘查询:
SELECT
CASE WHEN ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Employees] AS [Extent1]
LEFT OUTER JOIN [dbo].[Company] AS [Extent2] ON ([Extent1].[CompanyID] = [Extent2].[ID]) OR (([Extent1].[CompanyID] IS NULL) AND ([Extent2].[ID] IS NULL))
WHERE 1615 = [Extent1].[id]
)) THEN cast(1 as bit) ELSE cast(0 as bit) END AS [C1]
FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
我花了几个小时试图找到解决方案,但 LINQ 无法正确获取查询。
有人遇到同样的问题并以某种方式解决了吗?非常感谢任何帮助。
最佳答案
这个查询对我来说看起来是正确的。 LINQpad 查询看起来有所不同,因为在您的代码中使用 Any()
。
在 LINQpad 中尝试以下查询。它应该显示相同的 sql:
(from e in Employees
where e.id == 746
join f in Company on e.CompanyID equals f.ID into fa
from fr in fa.DefaultIfEmpty()
select new
{
e.id,
e.name,
companyName = fr.name
}).Any()
要在控制台中查看正确的查询,您可以使用 ToList()
而不是 Any()
关于c# - LINQ 语句生成与 LinqPad 不同的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28500858/
根据 LINQPad 网站,有几种不同的构建 原版版本(homepage 上的“立即下载”) X64 版本 AnyCPU build http://www.linqpad.net/Beta.aspx
总NOOB问题。我已经使用新的linqpad大约20分钟了。伟大的! 但是现在我想在数据库中删除一行。我正在使用EF5.0连接。我似乎无法在帮助文件或网上找到任何内容。我唯一能找到的是DeleteOn
在 LINQPad 的左下角,有一个显示查询的区域。一个选项卡是我的查询,另一个选项卡是 sample 。我找不到像在“我的查询”中那样添加多个文件夹的方法,就像在“示例”选项卡中一样。我尝试右键单击
在 Linqpad 中重新运行查询之间会保存什么状态?我假设没有,所以如果你运行一个脚本两次,它两次都会有相同的结果。 但是,在同一个 Linqpad 选项卡中运行下面的 C# 程序两次。你会发现第一
Linqpad 是唯一一个类似脚本的环境,我可以在其中使用我的大型代码库。它是唯一适合我的环境的原因是其他解决方案(ironpython 等)总是无法从 app.config 正确加载配置,但 lin
我的团队有很多我们通过 git 存储库共享的 linqpad 脚本。我们使用对我们自己的代码库的引用,其中每个团队成员的本地路径可能不同。因此,如果我们想要运行这样的脚本,我们需要首先编辑它的引用以指
在 LinqPad 中,我可以使用类似的东西 Console.ReadKey(); 或者 Util.ReadLine(); 但是,如何以可以实际输入输入的方式运行这些程序? UI 没有控制台窗口! 最
当我在 Linqpad 中运行查询时,我想在针对生产数据库运行查询时做一些额外的检查,是否有一种方法可以通过编程方式检测当前 linqpad 脚本的连接字符串是否处于事件状态标记为生产? 最佳答案 是
LINQPad 中显示的结果是有限的。如果对象嵌套很深,则会显示一条红线。 我想增加一个限制,这样我就可以看到更多的嵌套对象。 你知道怎么做吗? (我在选项中没有找到。) Background not
使用 LINQPad,使用扩展方法 Dump()、Console.WriteLine 或 Debug.Writeline,这些值将出现在结果窗口中。 有没有办法在 linqpad 脚本运行期间清除此结
我有一个 LINQPad 脚本文件 *.linq 并且有数据库连接的密码。如何提取密码? (看起来像是Base64编码的二进制数据。) 最佳答案 LINQPad 使用 DPAPI 加密密码。因此,只有
如何在 Linqpad 的文本编辑器中启用自动换行? 最佳答案 现在 LINQPad 中没有自动换行选项。您可以注册一个请求 here . 截至 Linqpad Beta v4.48 ,现在支持自动换
有没有办法,当我在 LINQPad 中打开查询时,它会执行它并将我置于仅结果 View 中?其预期用例是在 LINQPad 中编写小型应用程序。我不想每次都按 F5 和 Ctrl+Shift+R。 这
有没有办法在LINQPad中捕获结果面板的内容;也就是说,以编程方式捕获它,例如将其保存到文件中? 最佳答案 查看 LINQPad 的扩展方法。这是一个很好的堆栈溢出问题: LINQPad [exte
我正在引用 NuGet 包 ABCpdf ,它提供了一个托管的 DLL abcpdf.dll以及四对原生 DLL,在 x86 和 x64 版本中: packages\ABCpdf\11.2.2\bui
LinqPad 中的所有 Linq 查询(来自 SQL 的查询数据)都是只读的吗?我无法编辑数据,只能读取它。对? 下面的查询生成只读 View ,我没有找到编辑数据的方法。 from u in Us
我正在尝试为 WinForm 调用 ShowDialog(创建表单的实际代码位于 .linq 脚本中)并且一切正常,但对话框未显示在 LINQPad 应用程序的中心。当多个显示器在运行并且我盯着 LI
我观察到,如果我刷新或重新加载 LINQPad 指定的 Plugins 目录中的 dll,我还必须关闭并重新打开当前脚本才能使库更改生效 - 这当然是有道理的。我的问题是是否有一个命令或键专门执行此重
我正在尝试为 WinForm 调用 ShowDialog(创建表单的实际代码位于 .linq 脚本中)并且一切正常,但对话框未显示在 LINQPad 应用程序的中心。当多个显示器在运行并且我盯着 LI
默认情况下,LINQPAD 中的示例文件位于何处?在 C:\Users\MyUserName\AppData\Roaming\LINQPad\Samples 中,我看到了一些示例,但它不包括默认示例。
我是一名优秀的程序员,十分优秀!