DataTable 左连接

/// <summary> /// 处理DataTable的方法(通过此方法模仿左连接效果) /// </summary> /// <param name="TargetTable"></param> /// <param name="JoinTable"></param> /// <param name="JoinColumnName">作为连接的列名</param> /// <param name="AddColumnsFromJT">要纳入目标 DataTable的列名</param> private void DataTableJoin(ref DataTable TargetTable, DataTable JoinTable, string JoinColumnName, params string[] AddColumnsFromJT) { if (!TargetTable.Columns.Contains(JoinColumnName)) { throw new Exception("目标DataTable中无" + JoinColumnName + "列!"); } if (!JoinTable.Columns.Contains(JoinColumnName)) { throw new Exception("连接DataTable中无" + JoinColumnName + "列!"); } try { bool Exist = false;//标志是否存在与当前行的zone/org对应的数字,不存在则赋0 int ColumnIndex = TargetTable.Columns.Count;//列的序号 foreach (string Column in AddColumnsFromJT) { // 如果列名不与已有列重复,则用此列名,否则,用列的序号 if (!TargetTable.Columns.Contains(Column)) { TargetTable.Columns.Add(Column); } else { TargetTable.Columns.Add(ColumnIndex.ToString()); } for (int i = 0; i < TargetTable.Rows.Count; i++) { Exist = false; foreach (DataRow JoinRow in JoinTable.Rows) { if (JoinRow[JoinColumnName].ToString() == TargetTable.Rows[i][JoinColumnName].ToString()) { TargetTable.Rows[i][ColumnIndex] = JoinRow[Column]; Exist = true; } } if (!Exist) { TargetTable.Rows[i][ColumnIndex] = "0"; } } ColumnIndex++; } } catch (Exception e) { throw new Exception("执行DataTableJoin失败。/n" + e.Message); } }

转自:http://www.cnblogs.com/stubman/archive/2009/09/15/1567114.html

你可能感兴趣的:(exception,String)