我有代码这样的事情在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