我在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()
};
为什么会出现此问题以及如何解决此问题?
答案 0 :(得分:2)
此
t.Field<string>("db_code").ToString()
或许应该是这样的:
t.Field<short>("db_code").ToString()
或同等的
t.Field<Int16>("db_code").ToString()
答案 1 :(得分:1)
为什么会出现此问题
这是因为您尝试将Int16字段读取为字符串,这是不允许的
如何解决它
首先确定实际上是int16的字段,并且您正在读取字符串。从您的代码中,很可能是这个字段
t.Field<string>("db_code")
您需要将其更改为
t.Field<Int16>("db_code")