簡體   English   中英

2個數據表的左外部聯接

[英]Left outer join of 2 datatables

我想左加入2個數據表AllTimesTxnTableresolvedDt在C#中,當我想從AllTimesTxnTable每一行,只有匹配的行從resolvedDt。

txndate條件應基於midtxndate ,最后選擇“ 我要從AllTimesTxnTable中獲取mid和txndate,並從resolveDt選擇txncount,如果resolveDt中沒有記錄,則為0。

我嘗試了以下LINQ查詢:

 var results = from table2 in AllTimesTxnTable.AsEnumerable()
               join table1 in resolvedDt.AsEnumerable()
               on new { mid = table2.Field<int>("mid"), txndate = table2.Field<string>("txndate") } equals new { mid = table1.Field<int>("mid"), txndate = table1.Field<string>("txndate") }
               into temp
               from leftTable in temp.DefaultIfEmpty()
               select new
               {
                    MId = (int)table2["mid"],
                    TxnDate = (string)table2["txndate"],
                    TxnCount = leftTable["txncount"] == null ? 0M : (decimal)leftTable["txncount"]
                };

但這給了我一個錯誤: Object reference not set to an instance of an object. 在選擇時。

這里沒有出什么問題。

更新了代碼。 現在正在工作。

var results = from table2 in AllTimesTxnTable.AsEnumerable()
              join table1 in resolvedDt.AsEnumerable()
              on new { mid = table2.Field<int>("mid"), txndate = table2.Field<string>("txndate") } equals new { mid = table1.Field<int>("mid"), txndate = table1.Field<string>("txndate") }
              into temp
              from row in temp.DefaultIfEmpty()
              select new
              {
                   MId = (int)table2["mid"],
                   TxnDate = (string)table2["txndate"],
                   TxnCount = row == null ? 0M : (decimal)row["txncount"]
              };

暫無
暫無

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

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