2个数据表的左外连接

时间:2016-01-12 09:27:01

标签: c# linq

我想在C#中保留连接2个数据表AllTimesTxnTableresolvedDt,其中我想要来自AllTimesTxnTable的每一行,并且只匹配来自resolvedDt的行。

连接条件应该基于midtxndate,最后选择我希望来自AllTimesTxnTable的mid和txndate以及来自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.

这里没有出错。

1 个答案:

答案 0 :(得分:1)

更新了代码。它现在正在工作。

new Worker(
  action = "actionName",
  owner = null,
  validate = scopeObject => true,
  model = scopeObject => (),
  connector = scopeObject =>
    FrameFactory.createContainerAndShow("string", new JPanel())
))