【发布时间】: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,但也许你的问题与你的文化设置有关(即它将小数点解释为千位分隔符)? -
尝试使用
decimal或float而不是double -
这是一个动态过滤器,所以我需要使用Linq Dynamic。我对“,”也有同样的问题,将 13,5 转换为 135。