摘要:Odata
摘要:LinQ
摘要:SQL
當你用linqpad設定資料來源Odata Uri後,就可以用做強大的LINQ語法查詢並且轉換sql odata Lambda
But~!
小弟最近在測試過程中發現,
ex.DB有個table 叫TB裡面有個欄位叫做DT型別是datetime 存入2014-08-27 一筆資料
當你下sql的時候你可以這樣下
select dt from tb where 1=1 and dt='2014-08-27'
select dt from tb where 1=1 and dt='2014/08/27'
但是不能下
select dt from tb where 1=1 and dt='2014,08,27'
你來到linq的世界 你想把sql轉換成linq你會這樣下
from n in {資料來源DB}
where 1=1 and n.dt='2014-08-27'
select n
這樣會執行嗎?
答案是{ X }
你必須寫成
from n in {資料來源DB}
where 1==1 && n.dt==new datetime(2014,08,27)
select n
現在換一個場景,你無法登入DB你的資料來源是odata
odata一樣是將TB資料表轉成Odata 一樣有欄位DT裡面也有幾筆datetime型別的資料
你看過的文章,你知道linqpad可以將linq語法轉成odata的query get字串
所以你先下了一個簡單的linq看看資料
from n in {資料來源odata} where 1==1 select n
一看!沒錯果然有兩筆欄位資料2015/08/27,2012/08/27 所以你改變了語法
你想要練習一下linq to odata
所以你想知道看到dt欄位==2015/08/27有沒有資料(os:廢話!用看的也知道有!)
from n in {odata}
where 1==1 && n.dt ==new datetime(2015/08/27)
select n
結果一看結果,WTF 0 item
改成
from n in {odata}
where 1==1 && n.dt >=new datetime(2015/08/27)
select n
WTF怎麼資料又全出來了
所以你拜託管理DB的同仁開了TABLE看欄位資料,原來!
欄位資料是2015-08-27與2012-08-27
由於你看過上面的文章你知道要改寫成
from n in {odata}
where 1==1 && n.dt ==new datetime(2015,08,27)
select n
至於怎麼會這樣!?我也不知道ˊ_>ˋ
/* 姑且稱之為魔法吧 */
╮(′~‵〞)╭