读书人

小妹遇到一个超难的DataTable合并有关

发布时间: 2011-12-15 23:41:24 作者: rapoo

小妹遇到一个超难的DataTable合并问题!
我把现有的数据存放到两个DataTable表里(如下),

表名:CarTable
Num CarID GroupID CarNum CarMotorman
1 1 1 京A3352 张三
2 3 1 京B4321 李四
3 4 3 京C7680 王五
4 5 1 京F3360 李六

表名: GroupTable
Num GroupID GroupName
1 1 车辆一组
2 3 车辆三组

我想把这些表里的数据按照车辆组来分类,在存到另外一个DataTable里。
我想格式如下:

表名:NewTable
Num CarID GroupID GroupName CarNum CarMotorman
1 1 1 车辆一组 京A3352 张三
2 3 1 车辆一组 京B4321 李四
3 4 3 车辆三组 京C7680 王五
4 5 1 车辆一组 京F3360 李六

如何做!请各位师哥明示。这个问题太折磨我了!
小妹在这里说一下这里不是数据库题,是用C#写的程序题!
我是一点思路都没有了,这怎么合并啊!

谢谢各位师哥了!


[解决办法]
//--例子
//--关键是给DataTable添加键值PrimaryKey.
//--在此例中 "ID "应是关键字了.你的就是GroupID


DataTable dt1 = new DataTable();
dt1.Columns.Add( "ID ", typeof(int));
dt1.Columns.Add( "Name ", typeof(string));
dt1.PrimaryKey = new DataColumn[] { dt1.Columns[0]};
dt1.Rows.Add(1, "Age ");
dt1.Rows.Add(2, "Apple ");
dt1.Rows.Add(3, "Orange ");

DataTable dt2 = new DataTable();
dt2.Columns.Add( "ID ", typeof(int));
dt2.Columns.Add( "Price ", typeof(decimal));
dt2.PrimaryKey = new DataColumn[] { dt2.Columns[0] };
dt2.Rows.Add(1, 10);
dt2.Rows.Add(2, 6);
dt2.Rows.Add(3, 7);

DataTable dt3 = dt1.Copy();
dt3.Merge(dt2);

[解决办法]
下面这是我做的项目的一段代码。和你说的差不多,你自己在看看,呵呵,希望能帮上你

for (int jj = 0; jj < this._da.Rows.Count; jj++)
{
//和班组里原有的人员进行比较,如果存在则不让增加,以免重复
if (gvBranchPersonnel.Rows[index].Cells[0].Value.ToString() == this._da.Rows[jj][0].ToString())
{
//如果有相同的则跳出这个循环


jj = _da.Rows.Count;
//bool变量为真
bf = true;
}

}
//根据bool变量进行判断,如果为假则说明没有相同的,可以增加
if (bf == false)
{
//加到临时存放选中人员的DT里
DataRow row = _dtBranch.NewRow();
row[ "ID "] = gvBranchPersonnel.Rows[index].Cells[0].Value.ToString();
row[ "name "] = gvBranchPersonnel.Rows[index].Cells[1].Value.ToString();
row[ "sex "] = gvBranchPersonnel.Rows[index].Cells[2].Value.ToString();
row[ "age "] = gvBranchPersonnel.Rows[index].Cells[3].Value.ToString();
row[ "groupID "] = gvBranchPersonnel.Rows[index].Cells[4].Value.ToString();
row[ "branchID "] = gvBranchPersonnel.Rows[index].Cells[5].Value.ToString();
_dtBranch.Rows.Add(row);

//加到存放班组人员信息的DT里
DataRow row1 = _da.NewRow();
row1[ "ID "] = gvBranchPersonnel.Rows[index].Cells[0].Value.ToString();
row1[ "name "] = gvBranchPersonnel.Rows[index].Cells[1].Value.ToString();
row1[ "sex "] = gvBranchPersonnel.Rows[index].Cells[2].Value.ToString();
row1[ "age "] = gvBranchPersonnel.Rows[index].Cells[3].Value.ToString();
row1[ "groupID "] = gvBranchPersonnel.Rows[index].Cells[4].Value.ToString();
row1[ "branchID "] = gvBranchPersonnel.Rows[index].Cells[5].Value.ToString();
_da.Rows.Add(row1);
}
}

读书人网 >C#

热点推荐