无法强制类型为'System.Int16'输入'System.String'.ToDic

本文关键字:System Int16 输入 String ToDic 类型 | 更新日期: 2023-09-27 17:49:26

Dictionary<string, DataRow> dtUsers;
using (DataSet dsmyTable = DbConnection.db_Select_Query
                     ("use myDb select * from myTable"))
{
    dtUsers= dsmyTable .Tables[0].AsEnumerable().
         ToDictionary(row => row.Field<string>("UserId"));
}

UserId是一个smallint列但是我想把它转换成字符串

如何修改上面的linq ?

无法强制类型为'System.Int16'输入'System.String'.ToDic

不能将int强制转换为字符串,但可以获得int:

的字符串表示形式。
dtUsers= dsmyTable .Tables[0].AsEnumerable().
         ToDictionary(row => row.Field<short>("UserId").ToString());

但是,您应该仅为显示目的而这样做。一般来说,您会希望尽可能长时间地保留整型,因为处理整型要比到处从字符串解析它容易得多。

仅使用ToString()方法。当然,这只是为了表示您的smallint专栏。

dtUsers= dsmyTable .Tables[0].AsEnumerable().
         ToDictionary(row => row.Field<short>("UserId").ToString());