当前位置: 首页 > 编程语言 > C#

聚合参数中的语法错误:期望单个列参数具有可能的“子”限定符共享

时间:2023-04-11 02:58:14 C#

聚合参数中的语法错误:期望单个列参数具有可能的“子”限定符DataTabledistinctTable=dTable.DefaultView.ToTable(真,“ITEM_NO”,“ITEM_STOCK”);DataTabledtSummerized=newDataTable("SummerizedResult");dtSummerized.Columns.Add("ITEM_NO",typeof(string));dtSummerized.Columns.Add("ITEM_STOCK",typeof(double));整数计数=0;foreach(数据行dRowindistinctTable.Rows){count++;//字符串itemNo=Convert.ToString(dRow[0]);双TotalItem=Convert.ToDouble(dRow[1]);字符串TotalStock=dTable.Compute("sum("+TotalItem+")","ITEM_NO="+dRow["ITEM_NO"].ToString()).ToString();dtSummerized.Rows.Add(count,dRow["ITEM_NO"],TotalStock);}错误消息:聚合参数中的语法错误:需要一个可能带有“子”限定符的列参数。有人能帮我吗?谢谢。你可以试试这个:dTable.Compute("sum(["+TotalItem+"])","");即,将您的列名称括在方括号[]这个想法来自这篇文章。问题正是关于列的数据类型。如果您有一行动态添加没有数据类型的列(可能是手动计算或交叉表查询的结果)myTable.Columns.Add("AddedColumn");您可能遇到列转换问题。相反,如果您更改add方法并指向DataType,如下所示myTable.Columns.Add("AddedColumn",typeof(System.Int32));我认为它会起作用。这是我之前经历并修复的……你想写:dTable.Compute("sum(CONVERT(ITEM_STOCK,'System.Double'))","ITEM_NO='"+dRow["ITEM_NO"]。ToString()+"'")而不是:dTable.Compute("sum("+TotalItem+")","ITEM_NO="...因为它将转换为dTable.Compute("sum(value_of_TotalItem)","ITEM_NO="...,value_of_TotalItem是双精度的,不是列名。请参阅DataTable.Compute更新:试试这个:以上是C#学习教程:聚合参数中的语法错误:期望带有可能的“子”限定符的单个列参数我分享的所有内容,如果对每个人都有用并且需要了解有关C#学习教程的更多信息,希望大家多多关注——DataTabledistinctTable=dTable.Clone();dTable.Columns.Add("ITEM_STOCK_D",typeof(Decimal),"CONVERT(ITEM_STOCK,'System.Decimal')");foreach(DataRowdRowindTable.Rows){StringitemNo=dRow["ITEM_NO"].ToString();if(distinctTable.Select(String.Format("ITEM_NO='{0}'",itemNo)).Length==0){doubletotalStock=Convert.ToDouble(dTable.Compute("SUM(ITEM_STOCK_D)",String.Format("ITEM_NO='{0}'",itemNo)));distinctTable.Rows.Add(itemNo,totalStock.ToString());}}dTable.Columns.Remove("ITEM_STOCK_D");本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: