我有一个表达式,可以将一种对象转换为另一种类型的对象。该表达式如下:
public Expression<Func<SQLRepository.ActionType, Model.ActionType>> DBActionTypeToActionType =
(SQLRepository.ActionType at) => new Model.ActionType()
{
ID = at.OID,
DisplayName = at.DisplayName
};
我可以像这样使用表达式:
var linq = (from at in dc.SQLRepositoryDC.ActionTypes select at).Select(DBActionTypeToActionType);
但我希望像这样使用它:
var linq = (from at in dc.SQLRepositoryDC.ActionTypes select DBActionTypeToActionType.Compile().Invoke(at));
我已经寻找了几天,只能找到在Where子句中执行此操作的参考。如果我能够使用函数调用来做到这一点,那么使用查询语法应该是可行的。
使用查询语法的重要原因是一些被选中的对象由许多子对象组成,尝试使用函数符号将它们所有的转换链接在一起将更难编写和维护。