2014-01-10 134 views
5

我想將字符串值轉換爲日期時間LINQ查詢將字符串轉換爲日期時間

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)'方法,並且此方法不能轉換爲存儲表達式。

+0

嘗試使用'Convert.ToDateTime'代替 – Grundy

+1

你需要兌現'db.Order_Reports'(例如'.ToList()')做投影之前,作爲EF無法解析轉換成一個sql表達式。 – StuartLC

+0

@Grundy這也顯示錯誤LINQ to Entities無法識別方法'System.DateTime ToDateTime(System.String)'方法,並且此方法無法轉換爲存儲表達式。 – Golda

回答

5

您需要首先實現查詢(即加載數據)到您的應用程序,然後解析它。實體框架不知道如何執行.NET方法(如DateTime.Parse),它只會如果需要使用SQL轉換它,你可以嘗試使用SqlFunctions.DateAdd,只是添加到它們翻譯成SQL

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

每次調用它時都不會載入整個表格嗎? 如果表很大,那可能是很多數據。 –

+0

@RuneAntonsen非常真實。但是,如果您使用無法轉換爲查詢的常規.Net方法,這是不可避免的。完全重新設計它可能是最好的。 – i3arnon

+0

或者您可以投影您的列,然後調用ToList,然後應用另一個選擇來創建實例 – ciko

9

零間隔。

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

var kayitVarmi = (from myfTable in db.tbl_myfTable 
           . 
           . 
           . 
           .      
           where 
           tbl_donemAyYil.donemAyYilKu == myDateTime 
相關問題