foreach (DataRow dr in ds.Tables[0].Rows)
{
int num = ((int)dr.ItemArray[0]/14) * 12.5;
}
这将作为无效转换返回。没有转换,虽然它是一个对象被视为一个整型。我将如何获得此转换的工作?将DataRow.ItemArray [x]转换为int
foreach (DataRow dr in ds.Tables[0].Rows)
{
int num = ((int)dr.ItemArray[0]/14) * 12.5;
}
这将作为无效转换返回。没有转换,虽然它是一个对象被视为一个整型。我将如何获得此转换的工作?将DataRow.ItemArray [x]转换为int
声望太低发表评论。
尝试:
(int)Math.Round(((int)dr.Item(0)/14) * 12.5)
您可以使用Math.Floor()或Math.Ceiling()如果你需要一个特定的舍入方向。
应该double
没有int
这就是为什么无效转换错误你知道的。
double num = ((int)dr.ItemArray[0]/14) * 12.5;
或
double a = 0;
bool test = double.TryParse(dr.ItemArray[0].ToString(), out a);
if (test)
{
int pot = (int)((a/14) * 12.5);
}
希望帮助,
试试这个
foreach (DataRow dr in ds.Tables[0].Rows)
{
int number1 = 0;
bool canConvert = Int32.TryParse(dr.Item(0), out number1);
if (canConvert == true)
int num = (Convert.ToInt32(dr.Item(0))/14) * 12.5;
}
这仍然呈现一个对象(dr.Item(0))被用作一个Int。演员表无效。 – user1327418
为什么不在块内使用'number1'?并更新您的答案,问题中不再有'dr.Item'。 – Berkay
但是,什么是dr[0]
价值?
你能使用Convert.ToInt32(dr[0].ToString());
是价值与北欧打字例如5,72
十进制数的文本表示你将不得不作出一个
Convert.ToInt32(dr[0].ToString().Replace(",",".");
那么,什么是'dr.Item(0 )'?它是什么类型?还要注意的是,你正在做的整数除法可能不会给你预期 –
结果你可以用'int.TryParse' https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110)的.aspx – Valentin
这不是你的答案,但是,要查看在数据行的列是博士[0]或博士[“列名”] –