指定的类型转换对字段int无效
本文关键字:字段 int 无效 类型转换 | 更新日期: 2023-09-27 17:53:16
我一直在ID列的代码上获得"指定的cast是无效的"错误。我试着用
data.Columns.Add("ID", typeof(int));
让它知道ID是int类型。我正在从本地。xls文件中获取数据。
这是我的代码:
foreach (DataRow p in data.Rows)
{
TopPlayed top = new TopPlayed()
{
TrackID = p.Field<int>("ID"),
TrackName = p.Field<string>("Track Name"),
ArtistName = p.Field<string>("Artist Name"),
Times = p.Field<double>("NoOfPlays").ToString()
};
data.Columns.Add("ID", typeof(int));
daa.Add(top);
}
这是我的类:
public class TopPlayed
{
public int TrackID { get; set; }
public string TrackName { get; set; }
public string ArtistName { get; set; }
public string Times { get; set; }
}
提前干杯
尝试使用double
代替。Excel将数据显示为字符串或双精度。
TopPlayed top = new TopPlayed()
{
TrackID = Convert.ToInt32(p.Field<double>("ID")),
TrackName = p.Field<string>("Track Name"),
ArtistName = p.Field<string>("Artist Name"),
Times = p.Field<double>("NoOfPlays").ToString()
};
另一种方法是检查我们的类型(例如Watch window):
row.Table.Columns["id"].DataType
什么打印(在我的情况下):{Name = "Int64" FullName = "System.Int64"}
,然后改变你的代码为正确的类型:
TopPlayed top = new TopPlayed()
{
TrackID = p.Field<Int64>("ID"),
TrackName = p.Field<string>("Track Name"),
ArtistName = p.Field<string>("Artist Name"),
Times = p.Field<double>("NoOfPlays").ToString()
};
public class TopPlayed
{
public Int64 TrackID { get; set; }
public string TrackName { get; set; }
public string ArtistName { get; set; }
public string Times { get; set; }
}
如果是查询中的查询,最好的方法是提交一个简单的String然后将其转换为int32 ex.:
代替
p.Field (" ID ")
row [" ID "]