2014年6月27日 星期五

LINQ 動態查詢 LINQKit PredicateBuilder + Glimpse 效能監測

早在 2013 LINQ 動態查詢 就困擾著我

http://weisnote.blogspot.tw/2013/03/dynamic-linq.html

當時找到 Dynamic LINQ

但是組字串並不是個好法子

(要組字串的話 我何不直接用 Pure T-SQL)





曾經與 LINQ 纏鬥過的朋友都知道 動態查詢 很難搞

尤其是 Or

並沒有什麼內建的法子 可以讓你動態來 Or Or Or

要不就寫死 .Where(x => x.Foo == 'Foo' || x.Bar == 'Bar || x.Goo == 'Goo' || x.Nar == 'Nar'')

要不就 Expression Trees 硬幹 像這樣

靠自己 好自在...才怪

賣鬧啊 Expression Trees 學習曲線 可沒比 Regular Expression 低 (雖然小弟兩樣都沒學好)





如今 2014 了 技術是會進步的!!

(其實應該出來滿久的 只是我沒去玩他)

拜讀於此:

援助教技--IT點滴日誌:http://neo-tech-tw.blogspot.tw/2013/08/linq-predicatebuilder.html

繼續沉睡5000年:http://leaflet-t-h.blogspot.tw/2011/11/linq-predicatebuilder.html

Kelp Code:http://kelp.phate.org/2011/12/linq-to-object-linqkitpredicatebuilder.html





鄭重歡迎 ~ LINQKit http://www.albahari.com/nutshell/linqkit.aspx





LINQKit 裡面應該是有不少妖魔鬼怪的 但是今天只來玩 PredicateBuilder 來搞定 Or Or Or

照官網範例 很簡單就 完成了

靠大神 好爽...正解





其中比較讓人困惑的 可能就是這句

var predicate = PredicateBuilder.False<Products>();

它的完整型別長這樣

Expression<Func<Products, bool>> predicate = PredicateBuilder.False<Products>();

更不懂了?? 其實他就下面這東東

Expression<Func<Products, bool>> predicate = x => false;

至於什麼時候用 PredicateBuilder.True<T> 什麼時候用 PredicateBuilder.False<T> 則是看接起來是什麼結果

簡單來說 如果都是 Or 用 PredicateBuilder.False<T> 如果都是 And 用 PredicateBuilder.True<T>





眼尖的考究帝一定有發現瀏覽器下面有一條鬼東西

那是最近神人傳授的好物 Glimpse

不僅美觀 功能更甚 MiniProfiler

Glimpse 官網http://getglimpse.com/Docs/

怎麼裝就不用講了 Nuget~催落去

真要說有什麼缺點的話 大概就是 螢幕太小很麻煩 因為 他內容很多 非常寬 : P

沒有留言:

張貼留言