【问题标题】:In join want to get not matched records在加入想要得到不匹配的记录
【发布时间】:2013-09-28 11:34:36
【问题描述】:

在 DF 4 vs 2010 上工作。面对 SalSalesOrderDetail 与 SalSalesOrderFinancial 表的连接问题。

在 SalSalesOrderFinancial 中,一条记录的 SalesOrderDetailID=null。想要获取那些 SalesOrderDetailID 不存在于 SalSalesOrderFinancial 中的记录。

要获得所需的输出,请编写下面的 linq 语法,它正在工作。寻找更好的连接语法。有没有办法在一次连接中获得所需。

      var tempBDwithSODetail = (from p in this.Context.SalSalesOrderFinancials
                                          where p.SalesOrderDetailID != null
                                          select p.SalesOrderDetailID).AsEnumerable();

                var tempBDwithOutSODetail = (from p in this.Context.SalSalesOrderFinancials where p.SalesOrderDetailID == null select p).AsEnumerable();
                var querySOD = (this.Context.SalSalesOrderDetails.Where(item => !tempBDwithSODetail.Contains(item.SalesOrderDetailID))).AsEnumerable();

var tempBDetail = (from p in querySOD
                  join q in tempBDwithOutSODetail on p.SalesOrderID equals q.SalesOrderID
                                   where q.SalesOrderDetailID == null
                                   select new
                                   {
                                       q.SalesOrderID,
                                       p.SalesOrderDetailID,
                                       q.CurrencyID,
                                       q.BillingPolicyID,
                                       q.BillTypeID,
                                       q.BillingTypeID
                                   }).AsEnumerable();

如有任何疑问,请询问。在此致谢。

【问题讨论】:

    标签: linq entity-framework join


    【解决方案1】:

    如果我找到你,你只需要在 SalSalesOrderDetailSalSalesOrderFinancial 之间进行简单的左连接...

    var query = (from u in this.Context.SalSalesOrderDetail
                 join t in this.Context.SalSalesOrderFinancials 
                     on u.SalesOrderDetailID equals t.SalesOrderDetailID into JoinedList
                 from t in JoinedList.DefaultIfEmpty()
                 select new
                 {
                     SalSalesOrderDetail = t,
                     SalSalesOrderFinancials = u
                 })
                 .Where(u => u.SalSalesOrderFinancials == null)
                 .ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多