数据表列表达式

时间:2018-03-20 16:16:54

标签: c# datatable

我正在使用一个应用程序,用户可以将数量和价格相乘,并使用列表达式将结果显示在第三列中 我使用的代码如下所示:

       DataTable dt = new DataTable("dtList");
    DataTable dataTable = new DataTable();//Created a new DataTable


        DataColumn dc = new DataColumn();
        dc.DataType = System.Type.GetType("System.Decimal");
        dc.ColumnName = "Price";


      DataColumn dc1 = new DataColumn();
        dc1.DataType = System.Type.GetType("System.Decimal");
        dc1.ColumnName = "qty"; 

          DataColumn dc2 = new DataColumn();
        dc2.DataType = System.Type.GetType("System.Decimal");
        dc2.ColumnName = "Total";
        dc2.Expression = "Price * qty";

       dataTable.Columns.Add(dc);//Add them to the DataTable
        dataTable.Columns.Add(dc1);
        dataTable.Columns.Add(dc2);

       object sumObject;
        sumObject = dt.Compute("Sum(Total)", "");

    I used this code to sum column Total, and show the result in a Text Box, but it's showing an error like this: "Cannot find column [Total]".

我的问题是,我可以更改,使此代码工作,每次用户更改数量时也会自动求和。 对不起我的英语和我的代码中的错误我是WPF的新手

1 个答案:

答案 0 :(得分:1)

快速检查你的代码我可以看到一件事。你定义一个名为dt的DataTable,然后你尝试计算列“dt.Total”,但你从来没有在你的dt中定义过一列。

尝试更改您的:

sumObject = dt.Compute(“Sum(Total)”,“”);

sumObject = dataTable.Compute(“Sum(Total)”,“”);

编辑:顺便说一下,如果你这样做:

dataTable = new DataTable();//Created a new DataTable


        DataColumn dc = new DataColumn();
        dc.DataType = System.Type.GetType("System.Decimal");
        dc.ColumnName = "Price";


        DataColumn dc1 = new DataColumn();
        dc1.DataType = System.Type.GetType("System.Decimal");
        dc1.ColumnName = "qty";

        DataColumn dc2 = new DataColumn();
        dc2.DataType = System.Type.GetType("System.Decimal");
        dc2.ColumnName = "Total";
        dc2.DefaultValue = 5;
        dc2.Expression = "Price * qty";

        dataTable.Columns.Add(dc);//Add them to the DataTable
        dataTable.Columns.Add(dc1);
        dataTable.Columns.Add(dc2);

您的第三列已经具有“price * qty”的值。 如果要显示所有直流总计列的总和,请使用:

            object sumObject = dataTable.Compute("Sum(Total)", "");

然后

yourTextbox.Text = sumObject.ToString();