我一直得到"指定演员阵容无效" ID列中的代码出错。我尝试使用
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; }
}
提前欢呼:)
答案 0 :(得分:1)
请尝试使用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()
};
答案 1 :(得分:1)
另一种方法是检查我们的类型(例如,使用 Watch 窗口):
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; }
}
答案 2 :(得分:1)
如果这是查询中的查询,则最好的工作方式是提交一个简单的String 然后将其转换为int32 ex。:
代替使用
p.Field(“ ID”)
执行
行[“ ID”]