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); }