gpt4 book ai didi

c# - LINQ to Entities 无法识别方法 'Int64 Max(Int64, Int64)' 方法,并且该方法无法转换为存储表达式

转载 作者:行者123 更新时间:2023-12-02 17:19:04 25 4
gpt4 key购买 nike

我在运行时收到此错误消息

LINQ to Entities does not recognize the method 'Int64 Max(Int64, Int64)' method, and this method cannot be translated into a store expression.

当我尝试这样做时:

return _dbContext.Appointment.Where(x => Math.Max(x.Appointment.StartTime.Ticks, startTime.Ticks) <= Math.Min(x.Appointment.EndTime.Ticks, endTime.Ticks));

此查询背后的想法是“如果最晚开始时间早于最早结束时间,则日期和时间有一些重叠/接触”。

有什么办法可以让这条线正常工作吗?我已经检查过 EntityFunctions 是否有“某物”,但事实并非如此。

最佳答案

MaxMin 可以这样实现:

public static long Max(long a, long b)
{
return a < b ? b : a;
}
public static long Min(long a, long b)
{
return a < b ? a : b;
}

自 LINQ to Entities understands ? : ,您将能够将它们内联到您的表达式中。另外,由于不支持 Ticks,但 DateTime 比较...

Math.Max(x.Appointment.StartTime.Ticks, startTime.Ticks)

成为

(x.Appointment.StartTime < startTime ? startTime : x.Appointment.StartTime)

关于c# - LINQ to Entities 无法识别方法 'Int64 Max(Int64, Int64)' 方法,并且该方法无法转换为存储表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18124923/

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