麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

C#中連接兩個DataTable,相當于Sql的InnerJoin

2024-09-07 17:05:36
字體:
來源:轉載
供稿:網友

推薦:DataGrid的多行提交
盡管ASP.NET DataGrid是眾所周知非常好的表格控件,不過,提起DataGrid的編輯功能,我們卻不敢恭維了,就拿DataGrid的數據提交功能來說,的確存在很大的問題:在DataGrid中,每編輯一行就要

在下面的例子中實現了3個Join方法,其目的是把兩個DataTable連接起來,相當于Sql的Inner Join方法,返回DataTable的所有列。
如果兩個DataTable中的DataColumn有重復的話,把第二個設置為ColumnName "_Second",下面是代碼,希望對大家有所幫助。
using System;
using System.Data;

namespace WindowsApplication1
{
public class SQLOps
{
public SQLOps()
{
}
public static DataTable Join (DataTable First, DataTable Second, DataColumn[] FJC, DataColumn[] SJC)
{
//創建一個新的DataTable
DataTable table = new DataTable("Join");
// Use a DataSet to leverage DataRelation
using(DataSet ds = new DataSet())
{
//把DataTable Copy到DataSet中

ds.Tables.AddRange(new DataTable[]{First.Copy(),Second.Copy()});

DataColumn[] parentcolumns = new DataColumn[FJC.Length];

for(int i = 0; i < parentcolumns.Length; i )
{
parentcolumns[i] = ds.Tables[0].Columns[FJC[i].ColumnName];
}
DataColumn[] childcolumns = new DataColumn[SJC.Length];
for(int i = 0; i < childcolumns.Length; i )
{
childcolumns[i] = ds.Tables[1].Columns[SJC[i].ColumnName];
}

//創建關聯
DataRelation r = new DataRelation(string.Empty,parentcolumns,childcolumns,false);
ds.Relations.Add(r);

//為關聯表創建列
for(int i = 0; i < First.Columns.Count; i )
{
table.Columns.Add(First.Columns[i].ColumnName, First.Columns[i].DataType);
}
for(int i = 0; i < Second.Columns.Count; i )
{
//看看有沒有重復的列,如果有在第二個DataTable的Column的列明后加_Second
if(!table.Columns.Contains(Second.Columns[i].ColumnName))
table.Columns.Add(Second.Columns[i].ColumnName, Second.Columns[i].DataType);
else
table.Columns.Add(Second.Columns[i].ColumnName "_Second", Second.Columns[i].DataType);
}
table.BeginLoadData();
foreach(DataRow firstrow in ds.Tables[0].Rows)
{
//得到行的數據
DataRow[] childrows = firstrow.GetChildRows(r);
if(childrows != null && childrows.Length > 0)
{
object[] parentarray = firstrow.ItemArray;
foreach(DataRow secondrow in childrows)
{
object[] secondarray = secondrow.ItemArray;
object[] joinarray = new object[parentarray.Length secondarray.Length];
Array.Copy(parentarray,0,joinarray,0,parentarray.Length);
Array.Copy(secondarray,0,joinarray,parentarray.Length,secondarray.Length);
table.LoadDataRow(joinarray,true);
}
}
}
table.EndLoadData();
}
return table;
}
public static DataTable Join (DataTable First, DataTable Second, DataColumn FJC, DataColumn SJC)
{
return Join(First, Second, new DataColumn[]{FJC}, new DataColumn[]{SJC});
}
public static DataTable Join (DataTable First, DataTable Second, string FJC, string SJC)
{
return Join(First, Second, new DataColumn[]{First.Columns[FJC]}, new DataColumn[]{First.Columns[SJC]});
}
}
}

分享:DataGrid表頭不動,表身動
上次和海東兄討論了這個問題,但是他的表頭沒有線,所以用Div形式實現了,實現功能顯示表格,代碼如下(后臺.cs文件只要綁定數據就可以了,字段和前臺綁定的一致就OK了,在此不加贅述):<

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久久久久国产精品 | v11av在线视频成人 | 国产亚洲区 | 秋霞a级毛片在线看 | 蜜桃av鲁一鲁一鲁一鲁 | 日韩视频一区二区在线观看 | 欧美日韩免费一区 | 鲁丝片一区二区三区免费入口 | 黄色aaa视频 | 日本s级毛片免费观看 | 成人毛片一区 | 日本在线播放一区二区 | 亚洲成人福利在线观看 | 91久久久国产精品 | 日韩视频―中文字幕 | 媚药按摩痉挛w中文字幕 | 中文字幕激情 | 日本中文字幕电影在线观看 | 国产乱轮视频 | 男人的天堂色偷偷 | 在线区| 一夜新娘第三季免费观看 | 久久精品日韩一区 | 日本精品久久久一区二区三区 | 毛片视频网站 | 午夜国产在线观看 | 日韩色电影 | 久久99久久98精品免观看软件 | 最新毛片在线观看 | 国产呦在线观看视频 | 在线看免费观看av | 色天使中文字幕 | 久久精品美乳 | 国产一级在线看 | 欧美日本综合 | 成年人在线免费播放视频 | 国产精品久久久久久久久久iiiii | 日本在线免费观看视频 | 亚洲欧美在线视频免费 | 精品成人av一区二区三区 | 日日噜噜噜夜夜狠狠久久蜜桃 |