gpt4 book ai didi

c# - LINQ to Entities 无法识别该方法

转载 作者:行者123 更新时间:2023-11-30 19:49:04 25 4
gpt4 key购买 nike

我在使用 Linq to Entities 时遇到问题,找不到解决方法。

这是我的代码:

var queryResult = result.Where(x => x.FollowedUp.Value.GetWeekFromDateTime() 
== DateTime.Now.GetWeekFromDateTime()).Select(x => x);

我的扩展方法是:

    public static int GetWeekFromDateTime(this DateTime date)
{
return System.Threading.Thread.CurrentThread.CurrentCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}

问题:

我收到“LINQ to Entities 无法识别 GetWeekFromDateTime 方法”,我明白这是为什么,因为它试图将我的代码转换为 sql 代码,而“GetWeekFromDateTime”不存在。但是我该怎么做呢?我想将从我从数据库中获取的日期开始的周数与该周数进行比较。

谢谢!

最佳答案

如果您在 FollowedUp 上有一个不错的索引字段,您可能想在此处调整您的算法,而不是仅通过 C# 计算当前周的最小和最大日期,并以 value >= min && value <= max 的形式进行查询反而。这样您就不会对数据库的每一行进行计算。


但是为了更直接地回答你的问题,即使我不建议在你的特定情况下这样做:你可以创建一个 SQL 函数来在这里进行计算,将它导入到你的数据上下文中,然后在内部调用它代替您的查询。

这将导致每一行都经过该函数,请记住。此外,即使您仍然想这样做,您也应该改变获得当前一周的方式;您只需获取该值一次,并在查询中为其使用一个变量...无需尝试为每一行重新计算它。

关于c# - LINQ to Entities 无法识别该方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538995/

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