【发布时间】:2014-01-16 09:27:32
【问题描述】:
我有一个问题。我正在使用 Visual Studio 在 c# 中编写一个应用程序。在应用程序中,我有包含产品、价格和数量列的数据表。对于每一列,我尝试将数据表中的所有行保存在列表中。例如:
List<string> products = new List<string>();
for (int i = 0; i < dt.Rows.Count; i++)
{
products.Add(dt.Rows[i]["products"].ToString());
}
此代码运行良好。问题是当我尝试将列价格中的数据保存到双列表中时。我尝试了很多方法,但没有一个是正确的。我试图做的是。 例如
List<double> prices = new List<double>();
for (int i = 0; i < dt.Rows.Count; i++)
{
prices.Add((double)dt.Rows[i]["price"]);
}
我总是收到错误消息 Specified cast is not valid。我还尝试了double parse,上面写着:input string was not in correct format。
我要做的就是将数据表中的数据存储到双列表中。
【问题讨论】:
-
调试代码时
dt.Rows[i]["price"]的值是多少? -
打印出您要转换为双精度的项目,并检查是否没有空值、空字符串、空格或格式错误的数字字符串。
-
您的数据库中的价格是什么类型?
-
Parse是个好主意!由于“输入字符串的格式不正确”,您是否检查过输入字符串实际上是什么?也许句号.和/或逗号,的使用方式与您的.NET 文化所期望的不同?也许有一些字符,比如$或USD之类的货币指示符,或者其他的。 -
价格显示为例如 9,8 和逗号。会不会是个问题。应该与点一起出现吗?
标签: c# list for-loop casting double