从Linq到实体查询的DateTime值中提取周数
本文关键字:提取 周数 DateTime Linq 实体 查询 | 更新日期: 2023-09-27 17:50:46
在下面的查询中,我得到以下异常:
LINQ到实体不能识别Int32方法GetWeekOfYear(系统。DateTime, System.Globalization.CalendarWeekRuleSystem.DayOfWeek)’方法,并且该方法不能转换为存储表达式。
查询:
var query = db.Cases
.Where(c => c.UserID == userId
&& ( string.IsNullOrEmpty( dateInterval ) || dateInterval.Equals( ControlValues.Today )?
DbFunctions.TruncateTime( c.EffectiveDate ).Value.Day == currentDayNum :
dateInterval.Equals(ControlValues.CurrentWeek) ?
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
DbFunctions.TruncateTime( c.EffectiveDate ).Value, CalendarWeekRule.FirstFourDayWeek,DayOfWeek.Monday) == currentWeekNum :
dateInterval.Equals(ControlValues.NextWeek) ?
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
DbFunctions.AddDays( DbFunctions.TruncateTime(c.EffectiveDate), 7 ).Value, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday ) == nextWeekNum :
dateInterval.Equals(ControlValues.CurrentMonth) ?
DbFunctions.TruncateTime(c.EffectiveDate).Value.Month == currentMonthNum :
true)
问题简而言之,是否有一种方法可以从linq查询中的数据库值中提取年数的星期?
使用SqlFunctions.DatePart
静态方法。生成的SQL查询将转换为DATEPART
SQL函数调用:
SqlFunctions.DatePart
Method返回一个整数,表示指定日期的指定日期部分。
该函数被转换为数据库。有关相应SQL Server函数的信息,请参见参见DATEPART (Transact-SQL)。
以"week"
为参数获取周数