C# 如何在Asp.net中将SqlDataReader字符串格式化为货币格式?

C# 如何在Asp.net中将SqlDataReader字符串格式化为货币格式?,c#,asp.net,string-formatting,C#,Asp.net,String Formatting,我像这样从数据库中检索值173557.0000。我想显示像1,73557.00 这是我试过的代码 Table1001Hour.Rows[i].Cells[0].Text = rd["hour"].ToString(); Table1001Hour.Rows[i].Cells[1].Text = string.Format("{0:C}", Convert.ToInt32(rd["salesCost"].ToString())); 但它会抛出一条错误消息 输入字符串的格式不正确 如果我不转换为字

我像这样从数据库中检索值
173557.0000
。我想显示像
1,73557.00

这是我试过的代码

Table1001Hour.Rows[i].Cells[0].Text = rd["hour"].ToString();
Table1001Hour.Rows[i].Cells[1].Text = string.Format("{0:C}", Convert.ToInt32(rd["salesCost"].ToString()));
但它会抛出一条错误消息

输入字符串的格式不正确

如果我不转换为字符串,它将显示与它相同的
173557.0000


谢谢

问题似乎在这里:

Convert.ToInt32(rd["salesCost"].ToString())
所以。。。不要那样做?从数据库返回的数据可能只是一个
int
,因此:
(int)rd[“salesCost”]
(或者,如果您不确定具体类型,
Convert.ToInt32(rd[“salesCost”])
)应该可以。然后还可以使用重载
来字符串
;给你:

Table1001Hour.Rows[i].Cells[1].Text = ((int)rd["salesCost"]).ToString("C");
(尽管基于
.0000
,但它可以是
十进制
双精度
——后者对于财务数据来说是一个非常糟糕的选择)


老实说,我认为让UI代码和DB代码直接接触是一个错误,但这可能就是我。如果是我,我会从数据库中填充一个对象模型,然后分别将对象模型写入UI。

问题似乎在这里:

Convert.ToInt32(rd["salesCost"].ToString())
所以。。。不要那样做?从数据库返回的数据可能只是一个
int
,因此:
(int)rd[“salesCost”]
(或者,如果您不确定具体类型,
Convert.ToInt32(rd[“salesCost”])
)应该可以。然后还可以使用重载
来字符串
;给你:

Table1001Hour.Rows[i].Cells[1].Text = ((int)rd["salesCost"]).ToString("C");
(尽管基于
.0000
,但它可以是
十进制
双精度
——后者对于财务数据来说是一个非常糟糕的选择)


老实说,我认为让UI代码和DB代码直接接触是一个错误,但这可能就是我。如果是我,我会从数据库中填充一个对象模型,然后分别将对象模型写入UI。

Convert.ToInt32(rd[“salesCost”].ToString())
why?
Convert.ToInt32(rd[“salesCost”].ToString())
why?它是Sql Server中的货币数据类型。因此,当我检索数据时,它以这种格式显示
1213.0000
。您的代码显示错误消息指定的强制转换无效
未转换为int或double。我现在该怎么办?@mohamedfaisal尝试
decimal
,否则:找出它是什么-即找出什么
rd[“salesCost”]。GetType()
返回我得到了输出。但结果类似于
123235.75
。我想要
1,23235.75
@mohamedfaisal,然后你需要将
CultureInfo
传递到
ToString()
-大概你想要印度文化;例如:
var culture=CultureInfo.GetCultureInfo(“en-IN”)
var s=(1234567.0M).ToString(“C”,文化)给出<代码>₹ 12,34567.00
它是Sql Server中的货币数据类型。因此,当我检索数据时,它以这种格式显示
1213.0000
。您的代码显示错误消息指定的强制转换无效
未转换为int或double。我现在该怎么办?@mohamedfaisal尝试
decimal
,否则:找出它是什么-即找出什么
rd[“salesCost”]。GetType()
返回我得到了输出。但结果类似于
123235.75
。我想要
1,23235.75
@mohamedfaisal,然后你需要将
CultureInfo
传递到
ToString()
-大概你想要印度文化;例如:
var culture=CultureInfo.GetCultureInfo(“en-IN”)
var s=(1234567.0M).ToString(“C”,文化)给出<代码>₹ 12,34567.00