【发布时间】:2017-06-08 07:25:15
【问题描述】:
我遇到了一个奇怪的问题,我觉得这很可能是我的愚蠢行为,但我最初的谷歌搜索似乎没有给我任何结果。
简而言之,我为一家仍在使用 VB 编写代码的公司工作,我目前正在做“LINQPad 挑战”,我在 LINQ 中编写所有临时查询,而不是使用 SQL Server Management Studio。也就是说,因为我更喜欢在 C# 中练习,因为我不可避免地要迁移到该语言,所以我想在 C# 中进行查询。
下面是我在 LINQPad 中运行的两个语句 - VB 一个很好地触发并返回数据,但 C# 一个触发并且什么都不做(没有错误,只是什么都不做......)。我的 C# 代码有问题吗?这不会让我感到惊讶,因为我每天都在 VB 中工作,对 C# 生疏了。
下面是两个查询,我认为它们是等价的。它们是针对我们的实体框架触发的,该框架首先在 Visual Studio 数据库中生成。同样,VB 的返回 tskID 列,而 C# 似乎没有做任何事情。
非常感谢任何帮助!
VB LINQ:
TblTasks.Join(
TblEmployeeTimePunches,
Function(tsks) tsks.tskID,
Function(etps) etps.etpTask_tskID,
Function(tsks,etps) New With { tsks, etps }) _
.Select(Function(s) s.tsks.TskID)
C# LINQ:
TblTasks
.Join(
TblEmployeeTimePunches,
tsks => tsks.TskID,
etps => etps.EtpTask_tskID,
(tsks, etps) => new {
tsks,
etps
}
).Select(
s => s.tsks.TskID
);
【问题讨论】:
-
大小写(上/下)在vb.net和c3中是不同的。为什么?
-
我首先输入了 VB(它不强制区分大小写),在将其转换为 C# 时,开始区分大小写,我更正了它。也就是说,只是为了验证这不会导致我的问题,我继续修改了 VB 查询以匹配案例,我确实得到了相同的结果(即 C# 版本仍然没有做任何事情)。
-
我认为问题不在于发布的代码。我会确保 TblTasks 在两种情况下都包含相同的数据。
-
我想知道 C# 表达式末尾的分号是否会导致 LINQPad 的
Dump方法不被自动调用?如果将;更改为.Dump()会发生什么? -
就是@Keith Hall!我尝试将其更改为 .Dump() 并得到结果。如果我将其更改为 C# 表达式,我也会得到结果。不知道我是如何最终没有尝试的……但不管怎样,这都行得通 - 谢谢!
标签: c# vb.net entity-framework linq linqpad