我在使用 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 函数来在这里进行计算,将其导入到你的数据上下文中,然后在你的查询中调用它。
请记住,这将导致每一行都经过该函数。另外,即使您仍然想这样做,您也应该改变获取当前星期的方式;您只需要获取该值一次,并在查询中使用它的变量...无需尝试为每一行重新计算它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)