LINQ查询将字符串转换为datetime

Gol*_*lda 9 .net c# linq datetime entity-framework

我想将字符串值转换为日期时间

public class demoDate
{
    public DateTime DueDate;
    public int OrderReportID;

    public DateTime _DueDate 
    { 
        get { return DueDate; } 
        set { DueDate = value; } 
    }

    public int _OrderReportID 
    { 
        get { return OrderReportID; } 
        set { OrderReportID = value;} 
    }
}
Run Code Online (Sandbox Code Playgroud)

询问

var DateQuery = (from o in db.Order_Reports
                 select new demoDate {
                    DueDate = System.DateTime.Parse(o.ReportDueDateTime), 
                    OrderReportID = o.OrderReportID
                 }).ToList();
Run Code Online (Sandbox Code Playgroud)

此编码显示以下错误

LINQ to Entities无法识别方法'System.DateTime Parse(System.String)'方法,并且此方法无法转换为存储表达式.

小智 14

如果需要使用SQL转换它,可以尝试使用SqlFunctions.DateAdd并添加零间隔.

var DateQuery = db.Order_Reports.Select(o => new demoDate {
    DueDate = SqlFunctions.DateAdd("day", 0, o.ReportDueDateTime), 
    OrderReportID = o.OrderReportID
 });
Run Code Online (Sandbox Code Playgroud)


i3a*_*non 7

您需要首先将查询实现(即加载数据)到您的应用程序,然后解析它.实体框架不知道如何执行.Net方法(如DateTime.Parse),它只知道如何将它们转换为SQL

var DateQuery = db.Order_Reports.ToList().Select(o => new demoDate 
{
    DueDate=DateTime.Parse(o.ReportDueDateTime),
    OrderReportID= o.OrderReportID
});
Run Code Online (Sandbox Code Playgroud)

  • 每次调用时这不会加载整个表吗?如果表很大,那可能是很多数据。 (3认同)