我给你一个我的例子,不知道对你是否有用
我是把两个Dataset的tables[0] 合并,没有设置什么primarykey//合并meter_test表的数据集与其它表的数据集
//联接的字段jld_id
private DataSet Unite_DataSet(DataSet m_DataSet_test,DataSet m_DataSet_other)
{
//声明结果数据集
DataSet m_DataSet = new DataSet();
int test_count = m_DataSet_test.Tables[0].Rows.Count;
int other_count = m_DataSet_other.Tables[0].Rows.Count;
//合前列数
int col_before = m_DataSet_test.Tables[0].Columns.Count;
//后续表的列数
int col_int = m_DataSet_other.Tables[0].Columns.Count;
//合并表结构,从1开始就是把后续表jil_id避开,我把它放在后续表第一个Column
for (int i =1 ; i < col_int ;i++)
{
m_DataSet_test.Tables[0].Columns.Add (new DataColumn(m_DataSet_other.Tables[0].Columns[i].ColumnName,m_DataSet_other.Tables[0].Columns[i].DataType));
}
//合并后列数
int col_after = m_DataSet_test.Tables[0].Columns.Count;
for (int i=0;i< test_count;i++)
{
for (int j=0;j < other_count; j++)
{
if(m_DataSet_test.Tables[0].Rows[i]["jld_id"].ToString() == m_DataSet_other.Tables[0].Rows[j]["jld_id"].ToString())
{
int tmp_k = 0;
for(int k = col_before; k < col_after;k++)
{
m_DataSet_test.Tables[0].Rows[i][k] = m_DataSet_other.Tables[0].Rows[j][tmp_k];
tmp_k++;
}
}
}
}
m_DataSet =m_DataSet_test;
//返回
m_DataSet;
}可能方法笨了点,但实现了~~~~,谁有更好办法??
我是把两个Dataset的tables[0] 合并,没有设置什么primarykey//合并meter_test表的数据集与其它表的数据集
//联接的字段jld_id
private DataSet Unite_DataSet(DataSet m_DataSet_test,DataSet m_DataSet_other)
{
//声明结果数据集
DataSet m_DataSet = new DataSet();
int test_count = m_DataSet_test.Tables[0].Rows.Count;
int other_count = m_DataSet_other.Tables[0].Rows.Count;
//合前列数
int col_before = m_DataSet_test.Tables[0].Columns.Count;
//后续表的列数
int col_int = m_DataSet_other.Tables[0].Columns.Count;
//合并表结构,从1开始就是把后续表jil_id避开,我把它放在后续表第一个Column
for (int i =1 ; i < col_int ;i++)
{
m_DataSet_test.Tables[0].Columns.Add (new DataColumn(m_DataSet_other.Tables[0].Columns[i].ColumnName,m_DataSet_other.Tables[0].Columns[i].DataType));
}
//合并后列数
int col_after = m_DataSet_test.Tables[0].Columns.Count;
for (int i=0;i< test_count;i++)
{
for (int j=0;j < other_count; j++)
{
if(m_DataSet_test.Tables[0].Rows[i]["jld_id"].ToString() == m_DataSet_other.Tables[0].Rows[j]["jld_id"].ToString())
{
int tmp_k = 0;
for(int k = col_before; k < col_after;k++)
{
m_DataSet_test.Tables[0].Rows[i][k] = m_DataSet_other.Tables[0].Rows[j][tmp_k];
tmp_k++;
}
}
}
}
m_DataSet =m_DataSet_test;
//返回
m_DataSet;
}可能方法笨了点,但实现了~~~~,谁有更好办法??
解决方案 »
- C# 已经实现模拟登录(可以获得登录后的html),怎样实现打开一个登录后的页面
- 存储过程无法识别参数
- AJAX框架的选择问题(使用收集)来者有分
- c#求教
- 求gif图像数据的压缩解压缩算法代码(C#)
- HTTP/1.1 500 Internal Server error
- 有人能帮忙吗?c#和winform做的职工管理系统
- 主要是散分了。有关结婚的题.有创议的给高分
- 在C#中怎么样才能使用System.Data.OracleClient 命名空间??(在线等啊!)
- 字符串操作问题
- 怎么知道一驱动器是什么类型(光驱,软驱还是磁盘分区)?
- 为什么装了vs2003后在开机时要选择用户?可以不选直接进系统吗?
现有dataset1 (as d1)、dataset2 (as d2)要合并,前提没有显示设置 PrimaryKey,避免麻烦,只要我逻辑设计上知道哪个是关联的字段。
1、大概过程是把d2并入d1,为了方便我把d2的关联字段放在column0(如果多个关联字段依次col1、col2..);
2、先改变d1的结构,把d2的col0(如果多个关联字段往后排)往后的column结构添到d1的columns里:
//合并表结构,从1开始就是把后续表jil_id避开,我把它放在后续表第一个Column
for (int i =1 ; i < col_int ;i++)
{
m_DataSet_test.Tables[0].Columns.Add (new DataColumn(m_DataSet_other.Tables[0].Columns[i].ColumnName,m_DataSet_other.Tables[0].Columns[i].DataType));
}
3、好合并后dataset结构在d1里构建好了,
循环d1里的每一行
嵌套循环d2,找到d2里要关联的行
for (int i=0;i< test_count;i++)
{
for (int j=0;j < other_count; j++)
{
//if(m_DataSet_test.Tables[0].Rows[i]["jld_id"].ToString() == m_DataSet_other.Tables[0].Rows[j]["jld_id"].ToString())
{//////}
}
}4、在上面的d2循环里再嵌套下面:
循环d1的新添加的Column列,为当前d1行付当前d2行每个Column的值(当然关联字段就不用了)
if(m_DataSet_test.Tables[0].Rows[i]["jld_id"].ToString() == m_DataSet_other.Tables[0].Rows[j]["jld_id"].ToString())
{
int tmp_k = 2; //标示m_DataSet_other的colunm,并且避开0列、1列的关联字段,从2开始
for(int k = col_before; k < col_after;k++)
{
m_DataSet_test.Tables[0].Rows[i][k] = m_DataSet_other.Tables[0].Rows[j][tmp_k];
tmp_k++;
}