2个数据表的左侧外部联接
本文关键字:外部 数据表 2个 | 更新日期: 2023-09-27 18:29:52
我想在C#中左联接两个数据表AllTimesTxnTable
和resolvedDt
,其中我想要AllTimesTTxnTable中的每一行,并且只匹配resolvedDt中的行。
联接条件应基于mid
和txndate
,最后在选择时,我希望从AllTimesTxnTable获得mid和txdata,从resolvedDt获得txncount,如果resolvedDt中没有记录,则为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"]
};