Linq查询DateTime.Date.DayOfWeek

试图只回到1年的星期四

using (var context = new Context1()) { // Get 1 year back only Thursday var oneYearEarlier = DateTime.Now.AddYears(-1); var query = (from c in context.Daily25Data where c.Date > oneYearEarlier && c.Date.DayOfWeek == DayOfWeek.Thursday select c).ToList(); Console.WriteLine(query); } 

并得到

附加信息:LINQ to Entities不支持指定的类型成员’DayOfWeek’。 仅支持初始化程序,实体成员和实体导航属性。

这是一个使用EntityFunctions.DiffDays的聪明解决方案

从他的post:

 DateTime firstSunday = new DateTime(1753, 1, 7); var bookings = from b in this.db.Bookings where EntityFunctions.DiffDays(firstSunday, b.StartDateTime) % 7 == 1 select b; 

LINQ无法识别您的SQL查询的第二部分。 您需要中断查询才能执行filter。

 using (var context = new algoventurelab_db1Context()) { // Go one year back from current date var startDate = DateTime.Today.AddYears(-1); // This will get all dates in context greater than start date. var query1 = (from c in context.Daily25Data where c.Date >= startDate select c).AsEnumerable(); //this will filter only thurdays var query = from c in query1 where c.Date.DayOfWeek == DayOfWeek.Thursday select c).ToList(); Console.WriteLine(query); }