我有代碼這樣的事情在LINQ的一個IRepository實施SQL:使用委託Linq中投影到SQL
var newlist = from h in list where h.StringProp1 == "1"
select new MyBusinessBO{
firstProp = h.StringProp1,
secondProp = h.StringProp2
};
投影到MyBusinessBO不difificult但是當業務對象有許多屬性投影代碼變得非常冗長。此外,由於投影可能發生在Repository中的多個位置,我們打破了DRY原則。
有沒有什麼辦法來抽象出投影或用代表來替代它?
I.e.替換代碼
firstProp = h.StringProp1,
secondProp = h.StringProp2
可重複使用的東西?
與上面的ckknight非常類似,但是這看起來可能會更好,因爲它可以創建更清晰的代碼。它有一個單獨的可重用函數的投影,可以傳遞。凱克奈特得到了答案,但是大衛B,你的工作方式讓我到了我想成爲的地方。我已經提出了ckknight的答案並接受了這個答案。 – Redeemed1 2010-06-03 12:17:49
被警告:使用'GetExpr()'函數在這裏顯示的確切語法是非常重要的。如果你有一個已經在幾個地方使用的DTE轉換方法,例如'public DTE Convert(Entity entity)',你試圖轉換爲一個可重用的表達式,那麼你必須刪除'entity'參數並創建lambda,如下所示 - 否則將檢索該表中的每一列。 – 2013-07-12 10:54:53