首页 > 解决方案 > 左连接的对象结果为空 c#

问题描述

我试图在 Linq 中加入两个不同的列表,如下所示:

var fab = (from a in lstt
           join b in lstt2 on new { a.PO, a.Line } equals new { b.PO, b.Line } into newab
           from ab in newab.DefaultIfEmpty()
           select new BomFabConcentrado
           {
             PO = a.PO,
             Line = a.Line,
             Fabric1 = ab.Fabric1
            }).ToList();

问题是 ab 的结果为空,我收到以下错误消息:

System.NullReferenceException:“对象引用未设置为对象的实例。” ab 为空。

作为额外信息,lstt 包含 900 个元素,而 lstt 包含 200 个元素。

有谁知道出了什么问题?

谢谢你的帮助。

标签: c#linq

解决方案


左连接使用以下查询

var fab = (from a in lstt
        join b in lstt2 on new { a.PO, a.Line } equals new { b.PO, b.Line } into newab
        from ab in newab.DefaultIfEmpty()
        select new BomFabConcentrado
        {
          PO = a.PO,
          Line = a.Line,
          Fabric1 = (ab == null || ab.Fabric1 == null) ? 0 : ab.Fabric1
          //or use
          Fabric1 = ab?.Fabric1 ?? 0
        }).ToList();

推荐阅读