我从northwind db中检索了一个数据集,以便通过视图中的webgrid显示出来。但是,当我实例化客户对象时,将'id'字段转换为int值时会出错。这是我的代码......
public ActionResult List()
{
SqlConnection conn;
SqlDataAdapter myDataAdapter;
DataSet myDataSet;
string cmdString = "SELECT CustomerID, CompanyName, ContactName, ContactTitle FROM Customers";
conn = new SqlConnection("Data Source=PETERPC\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");
myDataAdapter = new SqlDataAdapter(cmdString, conn);
myDataSet = new DataSet();
myDataAdapter.Fill(myDataSet, "Customers");
foreach (DataRow dr in myDataSet.Tables[0].Rows)
{
customers.Add(new Customer() { id = int.Parse(dr[0].ToString()), co_name = dr[1].ToString(), name = dr[2].ToString(), title = dr[3].ToString() });
}
return View(customers);
}
在控制器文件顶部声明的列表......
private List<Customer> customers = new List<Customer>();
但是我有很多方法可以解决这个问题,但是在id = int.Parse(dr[0].ToString())
总是错误的情况下,如果我不使用ID,它会正常运行。
以下是错误消息......
[FormatException:输入字符串的格式不正确。] System.Number.StringToNumber(String str,NumberStyles options, NumberBuffer&安培; number,NumberFormatInfo info,Boolean parseDecimal) +10726387 System.Number.ParseInt32(String s,NumberStyles style,NumberFormatInfo info)+145 System.Int32.Parse(String s)+23
Movie.Controllers.HelloController.List()in c:\ Users \ peter_000 \ Documents \ Visual Studio 2012 \项目\电影\电影\ \控制器HelloController.cs:52个
lambda_method(Closure,ControllerBase,Object [])+101
目标是将所有这些转移到Web服务并将其称为服务。这应该是微不足道的,但我似乎无法绕过它。
有人可以建议或建议更好的方法吗?
答案 0 :(得分:3)
为什么首先将它转换为字符串?假设实际是int
类型,只需转换:
// Property names changed to be more sensible
customers.Add(new Customer {
Id = (int) dr[0],
CompanyName = (string) dr[1],
ContactName = (string) dr[2],
Title = (string) dr[3]
});
当然,如果它是64位整数,则将其强制转换为long
(等)。
尽可能避免使用字符串转换 - 只是因为所有公开ToString
方法的方法都不应被视为邀请您随时调用它。