【发布时间】:2017-10-04 23:53:13
【问题描述】:
如果我想使用已经存在的 lambda 树表达式检索更多列 如下所示,我该怎么做?这适用于实体框架并希望它仍然有效。
Expression<Func<DivisionTeam, DirectorTeamModel>> columns= (d) => new DirectorTeamModel
{
Id = d.Id,
TeamId = d.Team.Id
};
if (criteria.Template == ExportTemplate.Import || criteria.Template == ExportTemplate.Default)
{
// Retrieve additional columns from "columns" expression tree
}
return _divisionTeamsRepository.GetPagedResults(criteria.Page, criteria.PageSize, @where.Expand(), string.Format("{0} {1}", criteria.SortOrder, criteria.SortDirection), columns);
【问题讨论】:
-
columns = d => { var c = columns(); c.OtherProperty = d.OtherProperty; return c; }有什么问题?请更具体地说明您尝试过的操作,以及您遇到的具体问题。您的问题目前非常广泛。 -
你不认为我已经这样做了吗?看起来你没有测试,因为你得到了这个错误。
A lambda expression with a statement body cannot be converted to an expression tree -
如果你想直接修改表达式,你可能会进入一个痛苦的世界。如果您只是创建一个全新的表达式,您的代码将看起来更具可读性,即使这意味着复制第一个表达式并仅添加其他属性。
-
是的,我认为这是我最后的手段,但我不敢相信没有简单的解决方案。
标签: c# entity-framework linq lambda linqkit