我知道这个问题之前已被多次回答,但我确信我的代码是正确的但是没有正常工作。
string total = ds.Tables[0].Rows[0][0].ToString();
string test = string.Format("{0:N}", total);
lbl_totalValue.Text = test;
此代码并非像我们希望的那样将逗号添加到我的值中。
谁能明白为什么?
答案 0 :(得分:6)
当你把
string total = ds.Tables[0].Rows[0][0].ToString();
表示隐式G
(“常规”)格式字符串
string total = ds.Tables[0].Rows[0][0].ToString("G");
不要过早格式化 :
var total = ds.Tables[0].Rows[0][0]; // Value from table
string test = string.Format("{0:N}", total); // Format total with "N" format string
答案 1 :(得分:2)
您的代码正在尝试格式化字符串。如果DataTable包含数字,您可以将格式说明符传递给ToString()
,例如
var test=ds.Tables[0].Rows[0][0].ToString("N");
或者将内容存储在本地变量中并使用String.Format
:
var total = ds.Tables[0].Rows[0][0];
string test = string.Format("{0:N}", total);
如果数据表包含字符串,则必须先将其解析为数字类型
答案 2 :(得分:1)
您必须使用数字类型string.Format
而不是字符串。在这种情况下,变量total
是一个字符串,它必须是一个数字。
答案 3 :(得分:1)
Strig.Format方法有8个重载。您正在使用此特定的:Format(String, Object),其中您传递String
值作为第二个参数的参数。这是因为您使用字符串变量(total
)来分配数据集中的值:
string total = ds.Tables[0].Rows[0][0].ToString();
此外,您使用.ToString()
将其检索为String
。
如果您使用SQL Server作为ds
数据集的数据源,并且您确定SQL data type
,那么您可以将该值直接分配给具有相应C# type
的变量。以不同的方式,SQL data types are mapped to C# data types。
如果您不确定C# data type
的{{1}},那么您可以执行以下操作:
ds.Tables[0].Rows[0][0]
这样你就可以使用Object total = ds.Tables[0].Rows[0][0];
string test = string.Format("{0:N}", total);
lbl_totalValue.Text = test;
的{{1}}重载。