| 
                         代码如下:  <div class="codetitle"><a style="CURSOR: pointer" data="73929" class="copybut" id="copybut73929" onclick="doCopy('code73929')"> 代码如下:<div class="codebody" id="code73929">  ///  /// 将两个列不同的DataTable合并成一个新的DataTable  ///  ///<param name="dt1">源表  ///<param name="dt2">需要合并的表  ///<param name="primaryKey">需要排重列表(为空不排重)  ///<param name="maxRows">合并后Table的最大行数  ///合并后的datatable  public static DataTable MergeDataTable(DataTable dt1,DataTable dt2,string primaryKey,int maxRows)  {  //判断是否需要合并  if (dt1 == null && dt2 == null)  {  return null;  }  if (dt1 == null && dt2 != null)  {  return dt2.Copy();  }  else if (dt1 != null && dt2 == null)  {  return dt1.Copy();  }  //复制dt1的数据  DataTable dt = dt1.Copy();  //补充dt2的结构(dt1中没有的列)到dt中  for (int i = 0; i < dt2.Columns.Count; i++)  {  string cName = dt2.Columns[i].ColumnName;  if (!dt.Columns.Contains(cName))  {  dt.Columns.Add(new DataColumn(cName));  }  }  //复制dt2的数据  if (dt2.Rows.Count > 0)  {  Type t = dt2.Rows[0][primaryKey].GetType();  bool isNeedFilter = string.IsNullOrEmpty(primaryKey) ? false : true;  bool isNeedQuotes = t.Name == "String" ? true : false;  int mergeTableNum = dt.Rows.Count;  for (int i = 0; i < dt2.Rows.Count && mergeTableNum < maxRows; i++)  {  bool isNeedAdd = true;  //如果需要排重时,判断是否需要添加当前行  if (isNeedFilter)  {  string primaryValue = dt2.Rows[i][primaryKey].ToString();  string fileter = primaryKey + "=" + primaryValue;  if(isNeedQuotes)  {  fileter = primaryKey + "='" + primaryValue + "'";  }  DataRow[] drs = dt.Select(fileter);  if (drs != null && drs.Length > 0)  {  isNeedAdd = false;  }  }  //添加数据  if (isNeedAdd)  {  DataRow dr = dt.NewRow();  for (int j = 0; j < dt.Columns.Count; j++)  {  string cName = dt.Columns[j].ColumnName;  if (dt2.Columns.Contains(cName))  {  //防止因同一字段不同类型赋值出错  if (dt2.Rows[i][cName] != null && dt2.Rows[i][cName] != DBNull.Value && dt2.Rows[i][cName].ToString() != "")  {  dr[cName] = dt2.Rows[i][cName];  }  }  }  dt.Rows.Add(dr);  mergeTableNum++;  }  }  }  return dt;  } 
                          (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |