【问题标题】:Linq query dynamic where doubleLinq 查询动态 where double
【发布时间】:2013-02-03 06:04:54
【问题描述】:

我有下一个过滤 Double 值的 IQueryable:

var pQuery =
        (from c in db.TABLE
         select new
             {
                cDate = c.DATE,
                dMid = (double)c.MID,
             })
             .Where("dMid > 13.5");

当我看到 IntelliTrace 时,Linq 会生成下一个查询:

select DATE, MID
from TABLE
where MID > cast(135 as float(53))

我不明白为什么 Linq 会删除小数点分隔符并将过滤器表达式从 13.5 转换为 135。

谁能帮帮我???

谢谢!!!!

【问题讨论】:

  • 不知道为什么你不使用强类型的where c.MID > 13.5f,但也许你的问题与你的文化设置有关(即它将小数点解释为千位分隔符)?
  • 尝试使用decimalfloat 而不是double
  • 这是一个动态过滤器,所以我需要使用Linq Dynamic。我对“,”也有同样的问题,将 13,5 转换为 135。

标签: linq dynamic double where


【解决方案1】:

最后它比我想象的要容易。用户 lc。使用“f”字符给我解决方案

var pQuery =
    (from c in db.TABLE
     select new
         {
            cDate = c.DATE,
            dMid = (double)c.MID,
         })
         .Where("dMid > 13.5f");

.. 这被翻译成:

select DATE, MID
from TABLE
where MID > cast(13.5 as float(53))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2015-11-21
    • 1970-01-01
    相关资源
    最近更新 更多