天天看點

C#進階系列——動态Lamada(二:優化)

上篇裡面我們說了動态Lamada的使用必要性以及使用場景,但是感覺用在項目裡面還不太友善,最難用的就是需要傳遞屬性名稱的字元串,感覺這有點太lower了。然後就是那個枚舉的使用着實感覺沒啥必要,我們隻需要将Contains、Equal、LessThan、GreaterThan等方法分别封裝一個獨立的方法即可。好了,多說容易讓人頭暈,直接上代碼吧。

C#進階系列——動态Lamada(二:優化)
C#進階系列——動态Lamada(二:優化)

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

還是來看看如何使用:

C#進階系列——動态Lamada(二:優化)
C#進階系列——動态Lamada(二:優化)

最大的友善就是我們想要篩選的字段可以通過lamada點出來了,再看看之前的那種用法

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

本文轉自懶得安分部落格園部落格,原文連結:http://www.cnblogs.com/landeanfen/p/4950336.html,如需轉載請自行聯系原作者