【问题标题】:Query Todays record in Entity Framework [duplicate]在实体框架中查询今天的记录[重复]
【发布时间】:2016-01-27 05:55:44
【问题描述】:

我如何只在下面的 EF 中获得今天的记录。我在下面试过但没有运气:

 List<VacancyBasket> VacancyBasket = bModel.VacancyBaskets
                      .Where(b => b.BasketID == teacherGuid && b.Created == DateTime.Now)
                      .ToList();

我遇到了异常:

LINQ to Entities 不支持指定的类型成员“日期”。 只有初始化器、实体成员和实体导航属性 支持。

【问题讨论】:

    标签: c# sql entity-framework linq


    【解决方案1】:

    如果您的 Created 列是 DateTime 变量,您可以这样做

    List<VacancyBasket> VacancyBasket = bModel.VacancyBaskets
                      .Where(b => (b.BasketID == teacherGuid && b.Created.Value.Day == DateTime.Now.Day ) )
                      .ToList();
    

    【讨论】:

      【解决方案2】:

      你也可以使用

      List<VacancyBasket> VacancyBasket = bModel.VacancyBaskets
                        .Where(b => b.BasketID == teacherGuid && b.Created.Day == DateTime.Now.Day)
                        .ToList();
      

      【讨论】:

        【解决方案3】:

        尽管其他答案是正确的,但您可以通过将语句转换为查询来避免拆分日期,如下所示: 首先,将 System.Data.Entity 命名空间添加到您的类中:

        Using System.Data.Entity;
        

        并使用 DbFunctions.TruncateTime 切断时间部分,以便您可以比较确切的两个日期(Today 和 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*};
        

        我希望这会有所帮助!

        【讨论】:

          【解决方案4】:

          你需要像这样投射到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();
          

          【讨论】:

          • var todaysDate = DateTime.Today 更简单
          【解决方案5】:

          您不能在 LINQ 语句中使用 Date 方法。您需要将日期保存到 DateTime 变量中并在 LINQ 语句中使用该变量。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-11-16
            • 1970-01-01
            • 2011-12-06
            • 2014-07-02
            • 2014-10-13
            • 2015-04-19
            • 1970-01-01
            相关资源
            最近更新 更多