簡體   English   中英

通過聯接兩個數據表使用LINQ進行刪除

[英]Delete using LINQ by joining two datatables

我有兩個數據表DurationByCurrency (在數據集中)和Fund ,如下所示 在此處輸入圖片說明

我想通過執行聯接來刪除“ 持續時間按貨幣數據”表中的行,其FundCode在Fund Dt中的值為2。

var result =  from table1  in raptorDS.Tables[RaptorTable.DurationByCurrency].AsEnumerable()
                               join table2  in fundDT.AsEnumerable()
                               on   table1.Field<string>("FundCode") equals table2.Field<string>("FundCode") into ps
                               from row in ps.DefaultIfEmpty()
                               {
                                    //delete query
                               }

由於我是LINQ的新手,請幫助我。

var result = from row1  in raptorDS.Tables[RaptorTable.DurationByCurrency].AsEnumerable()
                               join row2  in fundDT.AsEnumerable()
                               on   row1.Field<string>("FundCode") equals  row2.Field<string>("FundCode") 
                               where row1.Field<string>("value") 
                                    equals "2" select row1;

result.ToList().ForEach(row => row.Delete());

linqpad的示例測試代碼:

void Main()
{
    //sample data for test 
    DataSet ds = new DataSet();
    ds.Tables.Add(GetTable1());
    ds.Tables.Add(GetTable2());

    var result  = ( from rec1 in ds.Tables[0].AsEnumerable()
    join rec2  in ds.Tables[1].AsEnumerable()
     on   rec1.Field<string>("FC") equals rec2.Field<string>("FC")
     where rec2.Field<int>("Value") == 2  select rec1);

     result.ToList().ForEach(row => row.Delete());
     //now you have only "ABCD" and "AZY" in table 1
     //ds.Tables[0].Dump(); linqpad display result
}

DataTable GetTable1()
{
    DataTable table = new DataTable();
    table.Columns.Add("FC", typeof(string));
    table.Rows.Add("ABCD");
    table.Rows.Add("XYZ");
    table.Rows.Add("AZY");
    return table;
}

 DataTable GetTable2()
{
    DataTable table = new DataTable();
    table.Columns.Add("FC", typeof(string));
        table.Columns.Add("Value", typeof(int));
    table.Rows.Add("ABCD", 1);
    table.Rows.Add("XYZ", 2);
    table.Rows.Add("AZY",3);
    return table;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM