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

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

在C#中把兩個DataTable連接起來

2024-07-21 02:28:46
字體:
供稿:網(wǎng)友


作者:浪漫十一狼
在下面的例子中實現(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ā)表
主站蜘蛛池模板: 南平市| 浮梁县| 建始县| 福州市| 岳普湖县| 芒康县| 新竹市| 朔州市| 聊城市| 蓬溪县| 屏边| 建宁县| 渑池县| 武宁县| 旅游| 同心县| 来宾市| 舒城县| 曲沃县| 丁青县| 西安市| 井研县| 镇康县| 新沂市| 土默特左旗| 浠水县| 颍上县| 北宁市| 上高县| 武义县| 滕州市| 巴彦县| 延庆县| 灌阳县| 宜丰县| 陆丰市| 福贡县| 崇礼县| 松桃| 正宁县| 邛崃市|