【问题标题】:The binary operator Equal is not defined for the types 'System.Int64' and 'System.Decimal'没有为“System.Int64”和“System.Decimal”类型定义二元运算符 Equal
【发布时间】:2015-10-24 02:55:52
【问题描述】:

我在 Linqpad 中遇到了一个奇怪的问题,“有时”我尝试进行这样的查询:

decimal  appId = 8463054;
var pp = APPLICATIONS.Where(a => a.APPLICATION_ID == appId);
pp.Dump();

我收到此错误:

InvalidOperationException
The binary operator Equal is not defined for the types 'System.Int64' and 'System.Decimal'. 

知道有什么问题吗?

【问题讨论】:

  • 好吧,它不适用于 longSystem.Int64
  • @roryap 我如何在 Linqpad 中重建?!
  • @Hooman -- 不知道。没听说过。
  • 只是要把这个扔出去。您是否尝试过关闭并重新打开 LinqPad?以这种方式解决后,我遇到了一个奇怪的 LinqPad 编译问题。
  • 它是什么类型的连接? LINQ to SQL、实体框架还是 IQ?

标签: c# linq linqpad


【解决方案1】:

像这样更改您的代码:

long appId = 8463054; // long is just a keyword for System.Int64

没有必要将其声明为小数,因为无论如何您都没有使用小数位。

【讨论】:

  • 好吧,我明白你在那里做了什么,但即使使用 longSystem.Int64,我也会遇到同样的错误
  • 您收到的错误仍然指向System.Decimal?你重建了吗?
  • 我得到了完全相同的错误,不,我没有重建,因为我使用的是 Linqpad 而不是 VS
  • 好吧,我不知道 Linqpad。但在 VS 中,有时您必须重新构建以消除早期的编译器错误。
  • @Hooman 如果此更改没有解决问题,那么 LinqPad 似乎存在问题。也许您可以尝试将其关闭然后再打开?
【解决方案2】:

问题是 appId 是十进制的。只要声明它:

long  appId = 8463054;
var pp = APPLICATIONS.Where(a => a.APPLICATION_ID == appId);
pp.Dump();

【讨论】:

    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多