Linq "无法强制转换类型为'System.DateTime'键入'System.S

本文关键字:System 键入 类型 DateTime quot Linq 转换 | 更新日期: 2023-09-27 18:15:43

我正在使用linq从数据库中提取一些信息。

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>();

甲级:

    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,并从数据库中提取它而不进行转换。

但是,我仍然不明白为什么会出现错误

Linq "无法强制转换类型为'System.DateTime'键入'System.S

为了得到这个问题的正式答案,我将把所有者的答案贴在这里。(如果所有者在这里包含他的答案,我将删除此内容)。

(更新)

它现在工作,我改变所有的数据类型的STARTDATE为DateTime和提取它从数据库没有转换。

在存储过程中,删除TO_CHAR函数。这个函数将把datetime列转换为varchar2列。

TYPE CURS IS REF CURSOR;
CREATE OR REPLACE
PROCEDURE PROCEDURE_NAME (
    Cursor1 OUT CURS)
AS
BEGIN
    OPEN Cursor1 FOR
        SELECT NO, TITLE, STARTDATE
        FROM TABLE_1;
END;
相关文章: