我如何只在下面的EF中获得今天的记录。我试过下面但没有运气:
List<VacancyBasket> VacancyBasket = bModel.VacancyBaskets
.Where(b => b.BasketID == teacherGuid && b.Created == DateTime.Now)
.ToList();
我得到了例外:
指定的类型成员&#39;日期&#39; LINQ to Entities不支持。 仅初始化程序,实体成员和实体导航属性 得到支持。
答案 0 :(得分:6)
您需要像这样投射到DateTime
var todaysDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);
现在将其传递给过滤器
List<VacancyBasket> VacancyBasket = bModel.VacancyBaskets
.Where(b => b.BasketID == teacherGuid && b.Created == todaysDate)
.ToList();
否则你先得到今天的日期。
DateTime today = DateTime.Now.Date;
然后像这样实现:
List<VacancyBasket> VacancyBasket = bModel.VacancyBaskets
.Where(b => b.BasketID == teacherGuid && (b.Created.Value.Year == today.Year && b.Created.Value.Month == today.Month && b.Created.Value.Day== today.Day))
.ToList();
答案 1 :(得分:3)
尽管其他答案是正确的,您也可以通过将语句转换为查询来避免日期分割: 首先,将System.Data.Entity命名空间添加到您的类中:
Using System.Data.Entity;
并使用DbFunctions.TruncateTime截断时间部分,因此您可以在确切的两个日期(今天和VacancyBaskets.Create值)之间进行比较:
var myCollection = from b in bModel.VacancyBaskets where
DbFunctions.TruncateTime(b.Created) == DbFunctions.TruncateTime(DateTime.Now) && b.BasketID == teacherGuid
select new {*YOUR SELECTION GOES HERE*};
我希望这会有所帮助!
答案 2 :(得分:0)
您不能在LINQ语句中使用Date方法。您需要将日期保存到DateTime变量中,并在LINQ语句中使用该变量。
答案 3 :(得分:0)
你也可以使用
List<VacancyBasket> VacancyBasket = bModel.VacancyBaskets
.Where(b => b.BasketID == teacherGuid && b.Created.Day == DateTime.Now.Day)
.ToList();
答案 4 :(得分:0)
如果您的 Created 列是 DateTime 变量,您可以这样做
List<VacancyBasket> VacancyBasket = bModel.VacancyBaskets
.Where(b => (b.BasketID == teacherGuid && b.Created.Value.Day == DateTime.Now.Day ) )
.ToList();