Linq联接查询错误

本文关键字:错误 查询 Linq | 更新日期: 2023-09-27 18:26:15

我正在尝试连接多个数据表以创建一个数据表。这是查询。

var row = from r0w1 in dt_vi.AsEnumerable()
          join r0w2 in dt_workcenter.AsEnumerable()
          on r0w1.Field<int>("wcID") equals r0w2.Field<int>("iD")
          join r0w3 in dt_recipe.AsEnumerable()
          on r0w1.Field<int?>("curingRecipeID") equals r0w3.Field<int?>("recipe_id") join r0w4 in dt_defect.AsEnumerable()
          on r0w1.Field<int?>("defectID") equals r0w4.Field<int?>("defect_id") into ps
          from r0w4 in ps.DefaultIfEmpty()
          select r0w1.ItemArray.Concat(r0w2.ItemArray.Concat(r0w3.ItemArray.Concat(r0w4.ItemArray))).ToArray();
foreach (object[] values in row)
    dt.Rows.Add(values);

我尝试加入r0w1&r0w4作为LEFT OUTER JOIN。但是这里我得到了错误

对象引用未设置为对象的实例

中似乎出现错误

r0w4.ItemArray

可能是r0w4没有获得任何值。可能的原因是什么?

Linq联接查询错误

问题是,当没有行匹配时,ps.DefaultIfEmpty()将返回默认值(在本例中为null),因此它抛出了该错误。

你可以这样更改:-

r0w3.ItemArray.Concat(r0w4 != null ? r0w4 .ItemArray : new object[] {}))