将dataset.Compute(“Sum(TARGET_AREA)”,“”)转换为.toString(“N”)

时间:2014-12-11 01:20:50

标签: vb.net string datagridview

我正在尝试在我的数据网格中转换我的计算数据库列。我能够计算列并想要修复结果的格式。

Label18.Text = dataset.Compute("Sum(TARGET_AREA)", "") & " (ha)"

我的输出示例是100000.00(公顷) 我想要的输出是看起来像100,000.00(公顷)

我尝试使用.toString(“N”),但没有运气。

我的列类型是十进制,其他类型是Double。

有关如何修复它的想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用String.Format方法。

实施例

value = 1234.567890
Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture))

来源:MSDN Custom Numeric Format Strings.

以下是使用DataTable的示例 - 请注意,如果列允许空值,您可能需要检查总和。此外,这里的总和是通过数据表对象而不是数据集调用的(如你的问题所示) - 这段代码已经从C#自动翻译 - 我认为它在语法上是正确的。

Dim dataset As New DataSet("ds1")
Dim dt As New DataTable("dt")

Dim dc As DataColumn = dt.Columns.Add("TARGET_AREA", GetType(System.Decimal))
Dim dr As DataRow = dt.Rows.Add()
dr("TARGET_AREA") = 100000.0


Dim finalResult As String = ""
Dim value As Decimal
If dt.Rows.Count > 0 Then
    Dim result_obj As Object = dt.Compute("Sum(TARGET_AREA)", "")

    If result_obj Is System.DBNull.Value Then
        value = 0
    Else
        value = Convert.ToDecimal(result_obj)
    End If

    finalResult = String.Format(value.ToString("0,0.00", System.Globalization.CultureInfo.InvariantCulture)) & " (ha)"

    Console.WriteLine(finalResult)
End If
Console.Read()
Return