2013-02-18 12 views
1

我的下一個IQueryable的其中一個過濾器Double值:Linq查詢動態,其中雙

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

有人能幫助我嗎?

謝謝!

+0

不知道爲什麼你會不使用強類型'其中c.MID> 13.5f:使用「F」字

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

..這被翻譯成給我的解決辦法',但也許你的問題已經是與您的區域性設置(即它的解釋小數點作爲千位分隔符)? – 2013-02-18 18:06:14

+0

嘗試'decimal'或'float',而不是'double' – spajce 2013-02-18 18:07:44

+0

這是一個動態過濾器,所以我需要使用Linq Dymnamic。我有同樣的問題「」轉換13.5至135。 – user2084268 2013-02-18 18:10:16

回答

0

和最終它比我想象中的簡單。用戶lc。

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