LINQ查询将字符串转换为datetime

时间:2014-01-10 08:02:57

标签: c# .net linq entity-framework datetime

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

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

查询

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

此编码显示以下错误

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

3 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:0)

DateTime myDateTime = Convert.ToDateTime(DateTimePicker.Text);

var kayitVarmi = (from myfTable in db.tbl_myfTable 
                              .
                              .
                              .
                              .                      
                              where
                                tbl_donemAyYil.donemAyYilKu == myDateTime