我的方法应该返回一个用户注释列表,所以我这样做:
var saturday = DayOfWeek.Saturday;
var query = from note in userNotes
where note.NoteDate > lastMonth && note.NoteDate.DayOfWeek != saturday
select note;
但是我收到了这个错误:
LINQ to Entities不支持指定的类型成员“Date”。仅限初始值设定项,实体成员和实体导航属性。
有关如何使用linq比较星期几的任何想法?
答案 0 :(得分:16)
使用SqlFunctions.DatePart
静态方法。它将转换为DATEPART
TSQL函数调用。
var saturday = (int)DayOfWeek.Saturday;
var query = from note in userNotes
where note.NoteDate > lastMonth && SqlFunctions.DatePart("dw", note.NoteDate) != saturday
select note;
答案 1 :(得分:3)
由于我使用的是Oracle,我无法使用SqlFunctions
课程。最终我找到了解决此问题的简单方法:
通常当您尝试使用LINQ没有的属性时 本机支持,您需要创建一个具体的实现 在应用LINQ约束之前的集合。
您可以使用之前的ToList()或AsEnumerable()方法执行此操作 你的Where子句如下所示:
//Using the ToList() method
IEnumerable<CalendarDate> LessonDates = db.CalendarDates.ToList().Where(cd => cd.Date.DayOfWeek == DayOfWeek.Friday);
//Using the AsEnumerable() method
IEnumerable<CalendarDate> LessonDates = db.CalendarDates.AsEnumerable().Where(cd => cd.Date.DayOfWeek == DayOfWeek.Friday);
消息来源:link