【问题标题】:Datetime and GroupBy in LINQPAD 5 with MySQLLINQPAD 5 中的 Datetime 和 GroupBy 与 MySQL
【发布时间】:2018-09-21 08:14:34
【问题描述】:

我正在使用连接到 MySQL 的 LINQPAD 5。尝试运行以下表达式:

Productions.Where(p => p.Datetime.Year == 2018).GroupBy(p => p.Amount)

结果:

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?.datetime)

LINQPAD 将表达式转换为以下 SQL 语句:

SELECT t0.amount, YEAR(A6139838?.datetime) AS c0
FROM productions AS t0
WHERE (YEAR(t0.datetime) = 2018)
GROUP BY t0.amount

问题来自于访问“.Year”,

.GroupBy(p => p.Datetime)  //<-- this works
.GroupBy(p => p.Datetime.Year) //<--- MysqlException

截图:

【问题讨论】:

  • 为什么是 YEAR(A6139838?.datetime)?
  • 我不知道。这就是 LINQPAD 转换我的表达式的方式

标签: c# mysql .net linqpad


【解决方案1】:

试试这个

方法一:

.GroupBy(p => p.Datetime != null ? (int)p.Datetime.Year : 0) 

方法二:

将 Datetime 的属性名称更改为其他名称。实际上名称与 SQL 数据类型相同。可能有冲突

【讨论】:

  • 两种方法我都试过了,把Datetime重命名为“dt”,还是一样。我已向 Linqpad 开发人员报告了一个错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 2015-06-03
  • 2016-02-25
相关资源
最近更新 更多