public static System.Data.DataTable TableJoin(System.Data.DataTable dt, System.Data.DataTable dtDetail, string[] parentFieldName, string[] relationFieldName, bool isInnerJoin, string relationName = "") { System.Data.DataTable joinDt = newSystem.Data.DataTable(); try{ using (DataSet ds = newDataSet()) { ds.Tables.AddRange(newSystem.Data.DataTable[] { dt, dtDetail }); if (string.IsNullOrEmpty(relationName)) { relationName =Guid.NewGuid().ToString(); } List<DataColumn> parentc = new List<DataColumn>(); List<DataColumn> childc = new List<DataColumn>(); foreach (var item inparentFieldName) { parentc.Add(dt.Columns[item]); } foreach (var item inrelationFieldName) { childc.Add(dtDetail.Columns[item]); } DataRelation relation = new DataRelation(relationName, parentc.ToArray(), childc.ToArray(), false); ds.Relations.Add(relation); for (int i = 0; i < dt.Columns.Count; i++) { joinDt.Columns.Add(dt.Columns[i].ColumnName, dt.Columns[i].DataType); } for (int i = 0; i < dtDetail.Columns.Count; i++) { joinDt.Columns.Add(dtDetail.Columns[i].ColumnName, dtDetail.Columns[i].DataType); } joinDt.BeginLoadData(); foreach (DataRow firstrow in ds.Tables[0].Rows) { //得到行的数据 DataRow[] childrows =firstrow.GetChildRows(relation); object[] parentarray =firstrow.ItemArray; if (childrows != null && childrows.Length > 0) { foreach (DataRow childrow inchildrows) { object[] childarray =childrow.ItemArray; object[] joinarray = new object[parentarray.Length +childarray.Length]; Array.Copy(parentarray, 0, joinarray, 0, parentarray.Length); Array.Copy(childarray, 0, joinarray, parentarray.Length, childarray.Length); joinDt.LoadDataRow(joinarray, true); } } else{ if (!isInnerJoin) { joinDt.LoadDataRow(parentarray, true); } } } joinDt.EndLoadData(); } } catch(Exception ex) { throwex; } returnjoinDt; }
DataTable表连接
免责声明:文章转载自《DataTable表连接》仅用于学习参考。如对内容有疑问,请及时联系本站处理。
上篇计算音频帧的播放时间(音频码流 音频帧)Qt 事件总结(鼠标、键盘) QMouseEvent、QKeyEvent下篇
宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=