求datatable中 这种合并行的方法
gzABCD
a1000
b0200
c0030 ==========》
d0004
a0500
b0060
gzABCD
a1500
b0260
c0030
d0004
将gz列中同名的行合并,A B C D为列,而且是动态的,可能是A B C D E 。。。。等等 合并时,数值可以是相加的
[解决办法]
public static DataTable GetTableMerge(DataTable dt)
{
if (dt == null
[解决办法]
dt.Rows.Count == 0)
{
return dt;
}
else
{
ArrayList Al = new ArrayList();
for (int i = 0; i < dt.Rows.Count; i++)
{
String s = dt.Rows[i][0].ToString();
if (!Al.Contains(s))
{
Al.Add(s);
}
}
DataTable result = new DataTable();
result = dt.Clone();
//初始化新表
for (int i = 0; i < Al.Count; i++)
{
DataRow drtmp = result.NewRow();
drtmp[0] = Al[i];
for (int j = 1; j < result.Columns.Count; j++)
{
drtmp[j] = 0;
}
result.Rows.Add(drtmp);
}
//累加
foreach (DataRow drnew in result.Rows)
{
foreach (DataRow drold in dt.Rows)
{
if(drnew[0].Equals(drold[0]))
{
for (int j = 1; j < result.Columns.Count; j++)
{
drnew[j] = Convert.ToDouble(drold[j]) +Convert.ToDouble(drnew[j]);
}
}
}
}
return result;
}
}