C# 指定的强制转换对字段int无效
我一直在ID列中的代码上出现“指定的强制转换无效”错误。我试着用C# 指定的强制转换对字段int无效,c#,asp.net-mvc-4,int,C#,Asp.net Mvc 4,Int,我一直在ID列中的代码上出现“指定的强制转换无效”错误。我试着用 data.Columns.Add("ID", typeof(int)); 为了让它知道ID是一个int。我从本地的.xls文件中获取数据 这是我的密码: foreach (DataRow p in data.Rows) { TopPlayed top = new TopPlayed() {
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);
}
提前干杯:)试着改用
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()
};
TopPlayed top=新的TopPlayed()
{
TrackID=Convert.ToInt32(p.Field(“ID”)),
TrackName=p.Field(“轨迹名称”),
艺人名称=p.Field(“艺人名称”),
时间=p.Field(“NoOfPlays”).ToString()
};
另一种方法是检查我们的类型(例如,使用Watch window):
打印什么(在我的情况下):{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; }
}
TopPlayed top=新的TopPlayed()
{
TrackID=p.Field(“ID”),
TrackName=p.Field(“轨迹名称”),
艺人名称=p.Field(“艺人名称”),
时间=p.Field(“NoOfPlays”).ToString()
};
公众阶级被击败
{
public Int64 TrackID{get;set;}
公共字符串TrackName{get;set;}
公共字符串ArtistName{get;set;}
公共字符串时间{get;set;}
}
如果是查询中的查询,最好的方法是提交一个简单的字符串
然后将其转换为int32 ex:
而不是使用
p、 字段(“ID”)
做吧
行[“ID”]
row.Table.Columns["id"].DataType
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; }
}