考虑以下伪代码
Expression<Func<E,Datetime?>> expr =
e => (e.d1 ?? e.Rel.d1) ?? e.d2;
var q = myContext.E_DbSet.Select(x => new someDeclaredType {
Id = x.Id,
V = expr
});
=> CS0029 无法将类型“System.Linq.Expressions.Expression>”隐式转换为“System.DateTime?”
如果我尝试编译
Expression<Func<E,Datetime?>> expr =
(e => (e.d1 ?? e.Rel.d1) ?? e.d2).Compile();
var q = myContext.E_DbSet.Select(x => new someDeclaredType {
Id = x.Id,
V = expr(x)
});
=> NotSupportedException: LINQ to Entities 不支持 LINQ 表达式的节点类型“调用”。
我阅读了在 Select 语句中调用表达式 - LINQ to Entity Framework。但这不是我的确切情况。我需要在我的 select 子句中包含一个现有的表达式。这个表达式是函数调用的结果。所以我必须expr在我的 select 子句中使用。
如何做呢 ?
相关分类