gpt4 book ai didi

c# - 动态创建表达式调用方法 EntityFunctions.DiffDays

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:45 26 4
gpt4 key购买 nike

我正在尝试动态创建以下 Where 子句表达式:

context.Cars.
Where(c => EntityFunctions.DiffDays(c.Created, c.Created) == null).
ToList()

这是我用来创建表达式的代码:

var parameter = Expression.Parameter(typeof(Car), "c");
var property = Expression.Property(parameter, "Created");
var function = Expression.Call(typeof(EntityFunctions), "DiffDays",
null, property, property);
var comparison = Expression.Equal(function, Expression.Constant(null));
var result = Expression.Lamda<Func<Car, bool>>(comparison, parameter);

结果显示(似乎缺少“EntityFunctions.DiffDays”):

{c => (DiffDays(c.Created, c.Created) == null)}

当我尝试执行时:

context.Cars.Where(result.Compile()).ToList()

我收到错误信息:

this function can only be invoked from linq to entities

你知道我错过了什么吗?是不是因为它只显示“DateDiff”而不是“EntityFunctions.DateDiff”

谢谢。亚当

最佳答案

删除最后一行的“Compile()”调用,如下所示:

context.Cars.Where(result).ToList();

并将编译推迟到 LinqToEntities。

关于c# - 动态创建表达式调用方法 EntityFunctions.DiffDays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com