【问题标题】:LINQPad - C# vs VB IssueLINQPad - C# vs VB 问题
【发布时间】: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# 版本仍然没有做任何事情)。
  • 我认为问题不在于发布的代码。我会确保 TblTask​​s 在两种情况下都包含相同的数据。
  • 我想知道 C# 表达式末尾的分号是否会导致 LINQPad 的 Dump 方法不被自动调用?如果将 ; 更改为 .Dump() 会发生什么?
  • 就是@Keith Hall!我尝试将其更改为 .Dump() 并得到结果。如果我将其更改为 C# 表达式,我也会得到结果。不知道我是如何最终没有尝试的……但不管怎样,这都行得通 - 谢谢!

标签: c# vb.net entity-framework linq linqpad


【解决方案1】:

您在“语言”下选择的查询类型很重要。 C# 语句需要 .Dump() 调用才能输出。 C# 表达式会自动显示它们的输出。我猜你可能把这些弄混了。

【讨论】:

  • 是的,这就是问题所在,我知道我忽略了一些愚蠢的事情。感谢您的帮助!
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
相关资源
最近更新 更多