C# Datagrid if/then行计算

C# Datagrid if/then行计算,c#,.net,datagridview,datatable,C#,.net,Datagridview,Datatable,在中,我构建了一个连接到datagrid的datatable,datagrid有三列:id1、id2和sum 我想将id1和id2相加到“sum”列中,但前提是sum大于x(x将由textbox1提供) 我有这段代码,但默认情况下会添加所有列,并且不允许使用if/then语句 column = new DataColumn(); column.DataType = Type.GetType("System.Double"); column.Colu

在中,我构建了一个连接到datagrid的datatable,datagrid有三列:id1、id2和sum

我想将id1和id2相加到“sum”列中,但前提是sum大于x(x将由textbox1提供)

我有这段代码,但默认情况下会添加所有列,并且不允许使用if/then语句

        column = new DataColumn();
        column.DataType = Type.GetType("System.Double");
        column.ColumnName = "sum";
        table.Columns.Add(column);
        table.Columns["sum"].Expression = "[id] * [id2]";

我曾考虑添加一个foreach(table.Rows中的Datarow)(),但这不允许我创建if-then语句

假设此时的值为x,只需在表达式中执行case语句即可

做一些类似于-

table.Columns["sum"].Expression = "CASE WHEN [id] * [id2] > " + x + " THEN [id] * [id2] ELSE NULL END ";
顺便问一下,你想要的是乘积还是总和?列名为sum,但您得到的是乘积……只是好奇而已


如果在查询时没有x,则必须在DataGrid的ItemDataBound事件中执行此操作。将该sum列作为模板列,并在事件中计算其值。

我添加了您发布的确切代码,并得到以下错误:“语法错误:在'WHEN'运算符之后缺少操作数。”表。列[“sum”]。表达式=“CASE WHEN([id]*[id2])>7然后[id]*[id2]ELSE NULL END”;我甚至没有在谷歌搜索中看到这种on选项的参考,只是与SQL函数有关。找到了Microsoft的注释:但我没有看到synatx的时间。这解决了它:table.Columns[“sum”]。Expression=“IIF([id]*[id2]>7,1,[id]*[id2]);