我正在使用linq從數據庫中提取一些信息。Linq「無法投入'System.DateTime'類型的對象來鍵入'System.String'」錯誤
SQL腳本:
TYPE CURS IS REF CURSOR;
CREATE OR REPLACE
PROCEDURE PROCEDURE_NAME (
Cursor1 OUT CURS)
AS
BEGIN
OPEN Cursor1 FOR
SELECT NO, TITLE, TO_CHAR(STARTDATE) STARTDATE
FROM TABLE_1;
END;
LINQ的代碼:
var query = from e in getItem().AsEnumerable()
select new {
No = e.Field<string>("NO"),
Title = e.Field<string>("TITLE"),
StartDate = e.Field<string>("STARTDATE")
};
return query.Select(e => new ClassA()
{
No = e.No,
Title = e.Title,
StartDate = e.StartDate
}).ToList<ClassA>();
A類:
public class ClassA {
public string No { get; set; }
public string Title { get; set; }
public string StartDate { get; set; }
}
的getItem():
public DataTable getItem() {
OracleDataAdapter da = new OracleDataAdapter();
DataSet ds = new DataSet();
OracleCommand cmd = new OracleCommand();
cmd.CommandText = "PROCEDURE_NAME";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("Cursor1", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
da.SelectCommand = cmd;
da.Fill(ds);
return ds.Tables[0];
}
但查詢總是返回我錯誤Unable to cast object of type 'System.DateTime' to type 'System.String'.
,但我已經檢查STARTDATE被提取爲System.String。如何解決這個問題?其殺死我..
[更新]
它現在,我改變STARTDATE的所有數據類型DateTime
和數據庫,無需轉換解壓。
但是,我不明白爲什麼會出現錯誤。
如果你做了'StartDate = e.Field(「STARTDATE」)'會怎麼樣?那樣有用嗎? –
同樣的錯誤仍然提示出 – noobie
您是否在LINQ語句中使用了SQL查詢的結果,或者您是否嘗試構建一條LINQ語句來執行與SQL查詢相同的操作? – Tim