第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C#中DataTables的內(nèi)部聯(lián)接

C#中DataTables的內(nèi)部聯(lián)接

C#
慕標(biāo)琳琳 2019-07-27 10:08:08
C#中DataTables的內(nèi)部聯(lián)接設(shè)T1和T2是DataTable以下字段T1(CustID, ColX, ColY)T2(CustID, ColZ)我需要聯(lián)合表TJ (CustID, ColX, ColY, ColZ)如何在C#代碼中以簡(jiǎn)單的方式完成此操作?謝謝。
查看完整描述

3 回答

?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊


如果允許使用LINQ,請(qǐng)查看以下示例。它創(chuàng)建兩個(gè)帶有整數(shù)列的DataTables,用一些記錄填充它們,使用LINQ查詢(xún)連接它們并將它們輸出到Console。


    DataTable dt1 = new DataTable();

    dt1.Columns.Add("CustID", typeof(int));

    dt1.Columns.Add("ColX", typeof(int));

    dt1.Columns.Add("ColY", typeof(int));


    DataTable dt2 = new DataTable();

    dt2.Columns.Add("CustID", typeof(int));

    dt2.Columns.Add("ColZ", typeof(int));


    for (int i = 1; i <= 5; i++)

    {

        DataRow row = dt1.NewRow();

        row["CustID"] = i;

        row["ColX"] = 10 + i;

        row["ColY"] = 20 + i;

        dt1.Rows.Add(row);


        row = dt2.NewRow();

        row["CustID"] = i;

        row["ColZ"] = 30 + i;

        dt2.Rows.Add(row);

    }


    var results = from table1 in dt1.AsEnumerable()

                 join table2 in dt2.AsEnumerable() on (int)table1["CustID"] equals (int)table2["CustID"]

                 select new

                 {

                     CustID = (int)table1["CustID"],

                     ColX = (int)table1["ColX"],

                     ColY = (int)table1["ColY"],

                     ColZ = (int)table2["ColZ"]

                 };

    foreach (var item in results)

    {

        Console.WriteLine(String.Format("ID = {0}, ColX = {1}, ColY = {2}, ColZ = {3}", item.CustID, item.ColX, item.ColY, item.ColZ));

    }

    Console.ReadLine();


// Output:

// ID = 1, ColX = 11, ColY = 21, ColZ = 31

// ID = 2, ColX = 12, ColY = 22, ColZ = 32

// ID = 3, ColX = 13, ColY = 23, ColZ = 33

// ID = 4, ColX = 14, ColY = 24, ColZ = 34

// ID = 5, ColX = 15, ColY = 25, ColZ = 35


查看完整回答
反對(duì) 回復(fù) 2019-07-27
?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

我想要一個(gè)連接表的函數(shù),而不需要使用匿名類(lèi)型選擇器定義列,但很難找到任何。我最終不得不自己做。希望這將有助于將來(lái)搜索此內(nèi)容的任何人:

private DataTable JoinDataTables(DataTable t1, DataTable t2, params Func<DataRow, DataRow, bool>[] joinOn){
    DataTable result = new DataTable();
    foreach (DataColumn col in t1.Columns)
    {
        if (result.Columns[col.ColumnName] == null)
            result.Columns.Add(col.ColumnName, col.DataType);
    }
    foreach (DataColumn col in t2.Columns)
    {
        if (result.Columns[col.ColumnName] == null)
            result.Columns.Add(col.ColumnName, col.DataType);
    }
    foreach (DataRow row1 in t1.Rows)
    {
        var joinRows = t2.AsEnumerable().Where(row2 =>
            {
                foreach (var parameter in joinOn)
                {
                    if (!parameter(row1, row2)) return false;
                }
                return true;
            });
        foreach (DataRow fromRow in joinRows)
        {
            DataRow insertRow = result.NewRow();
            foreach (DataColumn col1 in t1.Columns)
            {
                insertRow[col1.ColumnName] = row1[col1.ColumnName];
            }
            foreach (DataColumn col2 in t2.Columns)
            {
                insertRow[col2.ColumnName] = fromRow[col2.ColumnName];
            }
            result.Rows.Add(insertRow);
        }
    }
    return result;}

您可以如何使用此示例:

var test = JoinDataTables(transactionInfo, transactionItems,
               (row1, row2) =>
               row1.Field<int>("TransactionID") == row2.Field<int>("TransactionID"));

一個(gè)警告:這當(dāng)然沒(méi)有優(yōu)化,所以在獲得超過(guò)20k的行數(shù)時(shí)要小心。如果您知道一個(gè)表將比另一個(gè)表大,請(qǐng)嘗試將較小的表放在第一個(gè),將較大的表放在第二個(gè)表中。


查看完整回答
反對(duì) 回復(fù) 2019-07-27
?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊

這是我的代碼。不完美,但工作得很好。我希望它對(duì)某人有所幫助:

    static System.Data.DataTable DtTbl (System.Data.DataTable[] dtToJoin)
    {
        System.Data.DataTable dtJoined = new System.Data.DataTable();

        foreach (System.Data.DataColumn dc in dtToJoin[0].Columns)
            dtJoined.Columns.Add(dc.ColumnName);

        foreach (System.Data.DataTable dt in dtToJoin)
            foreach (System.Data.DataRow dr1 in dt.Rows)
            {
                System.Data.DataRow dr = dtJoined.NewRow();
                foreach (System.Data.DataColumn dc in dtToJoin[0].Columns)
                    dr[dc.ColumnName] = dr1[dc.ColumnName];

                dtJoined.Rows.Add(dr);
            }

        return dtJoined;
    }


查看完整回答
反對(duì) 回復(fù) 2019-07-27
  • 3 回答
  • 0 關(guān)注
  • 813 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)