问题描述
如何在DataTable中合并相同条件的列数据最好能给个代码看看谢谢!!!!
解决方案
解决方案二:
相同条件的列数据?
解决方案三:
最好把问题说清楚
解决方案四:
不好意思忘记了是相同条件的数据列!!!!!!!!!!!!!!!!!!!!!!!!!!!!
解决方案五:
???
解决方案六:
我是这样写的但是最后的和不对!郁闷!!!!!DataTabletemp=newDataTable();DataColumncoldc1=newDataColumn();coldc.ColumnName="dc";temp.Columns.Add(coldc1);DataColumncoldqcl1=newDataColumn("dqcl",typeof(System.Double));temp.Columns.Add(coldqcl1);DataColumncolmax1=newDataColumn("max",typeof(System.Double));temp.Columns.Add(colmax1);DataColumncolmin1=newDataColumn("min",typeof(System.Double));temp.Columns.Add(colmin1);DataColumncolgrl1=newDataColumn("grl",typeof(System.Double));temp.Columns.Add(colgrl1);DataColumncolclmax1=newDataColumn("clmax",typeof(System.Double));temp.Columns.Add(colclmax1);DataColumncolclmin1=newDataColumn("clmin",typeof(System.Double));temp.Columns.Add(colclmin1);intnI=0;doublevl1=0,vl2=0,vl3=0,vl4=0,vl5=0,vl6=0;stringstr=dt.Rows[0]["dc"].ToString();DataRowrow1=null;while(nI!=dt.Rows.Count){row1=temp.NewRow();vl1=double.Parse(dt.Rows[nI]["dqcl"].ToString());vl2=double.Parse(dt.Rows[nI]["max"].ToString());vl3=double.Parse(dt.Rows[nI]["min"].ToString());vl4=double.Parse(dt.Rows[nI]["grl"].ToString());vl5=double.Parse(dt.Rows[nI]["clmax"].ToString());vl6=double.Parse(dt.Rows[nI]["clmin"].ToString());if(str==dt.Rows[nI]["dc"].ToString()){vl1+=vl1;vl2+=vl2;vl3+=vl3;vl4+=vl4;vl5+=vl5;vl6+=vl6;}else{//row1=temp.NewRow();row[0]=str;row[1]=vl1;row[2]=vl2;row[3]=vl3;row[4]=vl4;row[5]=vl5;row[6]=vl6;row1[0]=str;row1[1]=vl1;row1[2]=vl2;row1[3]=vl3;row1[4]=vl4;row1[5]=vl5;row1[6]=vl6;str=dt.Rows[nI]["dc"].ToString();if(row1!=null){temp.Rows.Add(row1);vl1=0;vl2=0;vl3=0;vl4=0;vl5=0;vl6=0;}}nI++;}dt=temp;dt.Columns[0].ColumnName="dc";
解决方案七:
这么高的分没人拿???????????????????????
解决方案八:
引用5楼junexiu的回复:
我是这样写的但是最后的和不对!郁闷!!!!!vl1=double.Parse(dt.Rows[nI]["dqcl"].ToString());vl2=double.Parse(dt.Rows[nI]["max"].ToString());vl3=double.Parse(dt.Rows[nI]["min"].ToString());vl4=double.Parse(dt.Rows[nI]["grl"].ToString());vl5=double.Parse(dt.Rows[nI]["clmax"].ToString());vl6=double.Parse(dt.Rows[nI]["clmin"].ToString());if(str==dt.Rows[nI]["dc"].ToString()){vl1+=vl1;vl2+=vl2;vl3+=vl3;vl4+=vl4;vl5+=vl5;vl6+=vl6;}else{//row1=temp.NewRow();row[0]=str;row[1]=vl1;row[2]=vl2;row[3]=vl3;row[4]=vl4;row[5]=vl5;row[6]=vl6;row1[0]=str;row1[1]=vl1;row1[2]=vl2;row1[3]=vl3;row1[4]=vl4;row1[5]=vl5;row1[6]=vl6;
你这样不是累加如果想累加要再定义6个值sum1,,sum6然后if(..){sum1+=vl1;..}else{}你现在这样写等于是每次循环进来你都将vl1重新附了次值,之前的和被冲掉了然后if(true)vl1+=vl1;等于是将这一行数据的这一列值乘以2了所以最后的合计值是最后一次为真的数据的2倍不是所有的合计
解决方案九:
费了好半天才大致看懂你的意思
解决方案十:
其实我也有点糊涂了你说的这个情况我也做了出来的值还是不对我把具体情况说说吧!厂abcdefA厂0198446718874951842A厂7741417258101524011457B厂434259451126641251046B厂3186822213105224722703现在就要把都同样厂的合并起来达到以下效果厂abcdefA厂总和总和总和总和总和总和B厂总和总和总和总和总和总和
解决方案十一:
这些数据在一个DataTable里面只能从这个DataTable里面取!
解决方案十二:
求A厂a总和:table.Compute("Sum("a")","厂=‘A厂’")以此类推,两个循环就能达到你要的结果。