在实体框架6中,我试图调用一个表达式,该表达式将计算出一个十进制的百分比(10%),并将其还给出。
我已经做了
Expression<Func<int, int>> ExpiringValue = Value => (int)(10 / 100 * Value);
Func<int, int> ExpiringValueFn = ExpiringValue.Compile();就在查询上面作为一个测试,然后调用它
from foo in context.stuff
select new {
Moo = SqlFunctions.DateAdd("Month", ExpiringValueFn((int)foo.MonthsValidFor), SqlFunctions.CurrentTimestamp())
} 但我得到的错误是“LINQ表达式节点类型'Invoke‘在LINQ实体中不受支持。”我是从这个开始工作的(https://www.tutorialsteacher.com/linq/linq-expression)
有什么想法吗?
发布于 2022-11-10 07:35:55
以下只是一个想法,还没有在我这方面进行测试。
为了将预定义的函数表达式合并到select中,将其拆分为一个选择链,该链分别处理输入、函数表达式和输出。这样可以避免对表达式树的手动操作。
Expression<Func<int, int>> valueFn = Value => (int)(0.1 * Value);
var result = context.stuff
.Select(x => (int)x.MonthsValidFor)
.Select(valueFn)
.Select(x => new {
Moo = SqlFunctions.DateAdd("Month", x, SqlFunctions.CurrentTimestamp())
});https://stackoverflow.com/questions/74374509
复制相似问题