国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

C#中把兩個DataTable連接起來,相當于Sql的Inner join方法

2024-07-21 02:26:24
字體:
供稿:網(wǎng)友
注冊會員,創(chuàng)建你的web開發(fā)資料庫,在下面的例子中實現(xiàn)了3個join方法,其目的是把兩個datatable連接起來,相當于sql的inner join方法,返回datatable的所有列。 
如果兩個datatable中的datacolumn有重復(fù)的話,把第二個設(shè)置為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) 

        { 

            //創(chuàng)建一個新的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]; 

                } 


                //創(chuàng)建關(guān)聯(lián) 

                datarelation r = new datarelation(string.empty,parentcolumns,childcolumns,false); 

                ds.relations.add(r); 


                //為關(guān)聯(lián)表創(chuàng)建列 

                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++) 

                { 

                    //看看有沒有重復(fù)的列,如果有在第二個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) 

                { 

                    //得到行的數(shù)據(jù) 

                    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]}); 

        } 


    } 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 文登市| 会东县| 苍南县| 拉孜县| 慈溪市| 长岭县| 平塘县| 玛纳斯县| 高雄市| 施甸县| 崇仁县| 苏尼特右旗| 四平市| 郑州市| 临潭县| 乌什县| 辉南县| 大邑县| 苏尼特右旗| 临夏市| 西丰县| 河源市| 乌拉特后旗| 凌源市| 城口县| 三亚市| 石景山区| 乌鲁木齐县| 广元市| 且末县| 澄江县| 宿松县| 手游| 西昌市| 德钦县| 民乐县| 西林县| 广南县| 额尔古纳市| 韶山市| 丰宁|