【问题标题】:Linq to Sql get today date only data from dbLinq to Sql 从 db 获取仅今天日期的数据
【发布时间】:2015-10-30 12:11:57
【问题描述】:

我无法通过仅日期比较从 db 获取数据。在 Db 中 InDateTime 数据类型为 DateTime

using (HatronEntities context = new HatronEntities())
{
     DateTime date = DateTime.Now.Date;
     var AttendData = (from c in context.tbl_CoachMobAttendDetails
                       where c.CoachId == model.Id && c.InDateTime.Value.Date ==date
                       select c).FirstOrDefault();
}

【问题讨论】:

    标签: c# sql entity-framework linq linq-to-entities


    【解决方案1】:
    using (HatronEntities context = new HatronEntities())
    {
        DateTime date = DateTime.Today;
        DateTime until = date.AddDays(1);
        var AttendData = (from c in context.tbl_CoachMobAttendDetails
                            where c.CoachId == model.Id && 
                            c.InDateTime.Value >= date &&
                            c.InDateTime.Value < until
                            select c).FirstOrDefault();
    }
    

    您最初并没有说它是 Linq To Entity Framework - 但您说的是 Linq To SQL!那么:

    using (HatronEntities context = new HatronEntities())
    {
        DateTime date = DateTime.Today;
        var AttendData = (from c in context.tbl_CoachMobAttendDetails
                            where c.CoachId == model.Id && 
                            DbFunctions.TruncateTime( c.InDateTime ) == date
                            select c).FirstOrDefault();
    }
    

    【讨论】:

    • EntityFunctions 现已弃用!
    • EntityFunctions 已过时。对于使用从 6.0 开始的 EF 版本的任何新应用程序,您应该使用 DbFunctions
    • 是的,如果您愿意并且您的目标是 EF6 及更高版本,您可以使用它。底线EntityFunctions或者DbFunctions,这里需要使用TruncateTime。
    【解决方案2】:

    你可以这样试试:

    c.InDateTime.Year == date.Year && c.InDateTime.Month == date.Month 
    && c.InDateTime.Day == date.Day
    

    或喜欢

    DbFunctions.TruncateTime(c.InDateTime.Value.Date) == date.Date
    

    【讨论】:

    • 错误:LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始化器、实体成员和实体导航属性。
    • @sandeepsingh:- 更新了我的答案。请检查!
    【解决方案3】:

    你可以使用DbFunctions.TruncateTime方法:

    DbFunctions.TruncateTime(c.InDateTime.Value.Date) == date.Date
    

    【讨论】:

      【解决方案4】:

      试试Like this

      c.InDateTime.Value.Date.Year == date.Year &&
      c.InDateTime.Value.Date.Month == date.Month &&
      c.InDateTime.Value.Date.Day == date.Day
      

      【讨论】:

      • 错误:LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始化器、实体成员和实体导航属性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 2016-05-11
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多