[英]Left outer join of 2 datatables
我想左加入2個數據表AllTimesTxnTable
和resolvedDt
在C#中,當我想從AllTimesTxnTable每一行,只有匹配的行從resolvedDt。
txndate
條件應基於mid
和txndate
,最后選擇“ 我要從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.