動態Lambda(2):優化

發表於2016-04-14

一、原理分析

上篇裡面我們說了動態Lambda的使用必要性以及使用場景,但是感覺用在專案裡面還不太方便,最難用的就是需要傳遞屬性名稱的字串,感覺這有點太lower了。然後就是那個列舉的使用著實感覺沒啥必要,我們只需要將Contains、Equal、LessThan、GreaterThan等方法分別封裝一個獨立的方法即可。好了,多說容易讓人頭暈,直接上程式碼吧。

二、程式碼示例

可以看出,對於常用的操作我們封裝了Contains、Equal、LessThan、LessThanOrEqual、GreaterThan、GreaterThanOrEqual六個方法,除了Contains方法的引數直接使用了Expression>型別以為,其他都用的Expression>。因為Contains方法只可能是string型別的變數操作,而其他操作可能涉及其他型別,就是為了傳這個object型別,有個問題博主除錯了很久,由於傳過來的是object,這個要得到屬性的真是型別貌似不那麼容易了,找了很久都沒找到。最後只能通過GetMemberExpression這個方法來得到MemberExpression。

還是來看看如何使用:

最大的方便就是我們想要篩選的欄位可以通過lamada點出來了,再看看之前的那種用法

有沒有瞬間高大上。USER_NAME直接點出來,比敲字串要爽吧。感謝神奇的Lamada,感謝全能的C#。

相關文章