Vb.net 将dataset.Compute(“总和(目标区域)”转换为.toString(“N”)

Vb.net 将dataset.Compute(“总和(目标区域)”转换为.toString(“N”),vb.net,string,datagridview,Vb.net,String,Datagridview,我正在尝试转换datagrid中的计算数据库列。我能够计算列,并希望修复结果的格式 Label18.Text = dataset.Compute("Sum(TARGET_AREA)", "") & " (ha)" 我的输出示例为100000.00(ha) 我希望我的输出看起来像100000.00(ha) 我尝试使用.toString(“N”),但没有成功 我的列类型是Decimal,其他的是Double 您知道如何修复它吗?您可以使用String.Format方法 范例 value =

我正在尝试转换datagrid中的计算数据库列。我能够计算列,并希望修复结果的格式

Label18.Text = dataset.Compute("Sum(TARGET_AREA)", "") & " (ha)"
我的输出示例为100000.00(ha) 我希望我的输出看起来像100000.00(ha)

我尝试使用.toString(“N”),但没有成功

我的列类型是Decimal,其他的是Double


您知道如何修复它吗?

您可以使用
String.Format
方法

范例

value = 1234.567890
Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture))
资料来源:

下面是一个使用DataTable的示例—请注意,如果列允许空值,则可能需要检查总和。另外,这里的sum是在datatable对象上调用的,而不是在dataset上调用的(如您的问题所示)-此代码是从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

第二个代码有效..我尝试了链接中的代码,但是它给了我一个关于Cultureinfo的错误..我尝试了第二个代码,成功了。但是,我有大约5个总和需要相同的格式。代码将占用一些空间来完成。是否有任何方法可以缩短它?要使cultureInfo工作,您可以使用System.Globalization.cultureInfo引用它,或者可以在代码顶部使用导入来导入System.Globalization命名空间。如果必须重复格式化,只需在类中创建一个方法,该方法接受十进制值作为输入,并返回格式化字符串作为输出。如果你对此有异议,请告诉我。谢谢。我能够解决它。而且,因为我们正在解决这个问题,我对需要添加的其他总数也有异议。。Label20.Text=dataset.Compute(“Sum(Project_Cost_Total)”,“”)该代码假设添加一列,其中数字以逗号分隔,例如1000222.00+1000.00..这给了我一个错误..有什么想法吗?.谢谢如果数字以逗号存储,那么“Sum”方法将不起作用,因为您的DataColumn类型很可能是字符串类型。我建议您检查创建列的位置,并将类型调整为decimal类型,如示例中所示。你得到的错误是,带有“,”符号的数字是格式化的,并且计算只能在未经计算的数字类型上进行。嗯,我需要这样存储它。但是当我将其更改为十进制时,它将不接受逗号