【问题标题】:Linq join query errorLinq 连接查询错误
【发布时间】:2015-12-09 06:53:31
【问题描述】:

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

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);

我尝试以LEFT OUTER JOIN 的身份加入 r0w1 和 r0w4。但在这里我得到了错误

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

错误似乎在

r0w4.ItemArray

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

【问题讨论】:

  • 可能是 r0w4 没有获得任何价值。 .... 你检查了吗?
  • DefaultIfEmpty 如果连接失败,则返回 null,因此您不能直接依赖该对象中的数据。你可能需要做一个空检查

标签: c# linq join


【解决方案1】:

问题是ps.DefaultIfEmpty() 将在没有行匹配时返回默认值(在这种情况下为null),因此它会抛出该错误。

你可以这样改:-

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多