3

我在 LINQ 查询中遇到以下异常。

无法将“System.Int16”类型的对象转换为“System.String”类型。


 var query = from t in dt.AsEnumerable()
                        select new
                        {
                            sys_db= t.Field<Int16>("process_id").ToString() + "|" + t.Field<string>("db_code").ToString(),
                            process_name = t.Field<string>("process_name").ToString()
                        };

为什么会出现此问题以及如何解决?

4

2 回答 2

4

这个

t.Field<string>("db_code").ToString()

也许应该是这样的:

t.Field<short>("db_code").ToString()

或同等学历

t.Field<Int16>("db_code").ToString()
于 2013-08-26T11:02:25.903 回答
1

为什么会出现这个问题

出现这种情况是因为您正在尝试将 Int16 字段读取为字符串,这是不允许的

如何解决

首先确定实际上是 int16 的字段,并且您正在读取为字符串。从您的代码中,很可能是这个字段

t.Field<string>("db_code")

你需要把它改成

t.Field<Int16>("db_code")
于 2013-08-26T11:22:20.667 回答