然后在DataTable中合并相同条件的列数据

junexiu 2009-02-05 04:11:33
如何在DataTable中合并相同条件的列数据 最好能给个代码看看 谢谢!!!!
...全文
319 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnjhjzyyxgs 2009-05-12
  • 打赏
  • 举报
回复
求A厂a总和:table.Compute("Sum("a")", "厂=‘A厂’")
以此类推,两个循环就能达到你要的结果。
junexiu 2009-02-06
  • 打赏
  • 举报
回复
其实我也有点糊涂了 你说的这个情况我也做了 出来的值还是不对

我把具体情况说说吧!

厂 a b c d e f
A厂 0 1984 467 1887 495 1842
A厂 774 1417 258 1015 2401 1457
B厂 434 2594 511 2664 125 1046
B厂 318 682 2213 1052 2472 2703

现在就要把都同样厂的合并起来 达到以下效果

厂 a b c d e f
A厂 总和 总和 总和 总和 总和 总和
B厂 总和 总和 总和 总和 总和 总和
llsen 2009-02-06
  • 打赏
  • 举报
回复
费了好半天才大致看懂你的意思
llsen 2009-02-06
  • 打赏
  • 举报
回复
[Quote=引用 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;

[/Quote]

你这样不是累加

如果想累加 要再定义6个值 sum1,,sum6
然后if(..)
{
sum1 += vl1;
..
}
else
{
}

你现在这样写 等于是 每次循环进来 你都将vl1重新附了次值,之前的和被冲掉了
然后if(true) vl1+=vl1; 等于是将这一行数据的这一列值乘以2了
所以最后的合计值 是最后一次为真的数据的2倍
不是所有的合计
junexiu 2009-02-06
  • 打赏
  • 举报
回复
这么高的分没人拿???????????????????????
junexiu 2009-02-06
  • 打赏
  • 举报
回复
这些数据在一个DataTable里面 只能从这个DataTable里面取!
junexiu 2009-02-05
  • 打赏
  • 举报
回复

我是这样写的 但是最后的和不对!郁闷!!!!!

DataTable temp = new DataTable();

DataColumn coldc1 = new DataColumn();
coldc.ColumnName = "dc";
temp.Columns.Add(coldc1);
DataColumn coldqcl1 = new DataColumn("dqcl", typeof(System.Double));
temp.Columns.Add(coldqcl1);
DataColumn colmax1 = new DataColumn("max", typeof(System.Double));
temp.Columns.Add(colmax1);
DataColumn colmin1 = new DataColumn("min", typeof(System.Double));
temp.Columns.Add(colmin1);
DataColumn colgrl1 = new DataColumn("grl", typeof(System.Double));
temp.Columns.Add(colgrl1);
DataColumn colclmax1 = new DataColumn("clmax", typeof(System.Double));
temp.Columns.Add(colclmax1);
DataColumn colclmin1 = new DataColumn("clmin", typeof(System.Double));
temp.Columns.Add(colclmin1);

int nI = 0;
double vl1 = 0,vl2=0,vl3=0,vl4=0,vl5=0,vl6=0;
string str = dt.Rows[0]["dc"].ToString();
DataRow row1 = 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";
bj890 2009-02-05
  • 打赏
  • 举报
回复
???
junexiu 2009-02-05
  • 打赏
  • 举报
回复
不好意思 忘记了 是相同条件的数据列!!!!!!!!!!!!!!!!!!!!!!!!!!!!
lovehongyun 2009-02-05
  • 打赏
  • 举报
回复
最好把问题说清楚
paking_wong 2009-02-05
  • 打赏
  • 举报
回复
相同条件的列数据?

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧