我正在尝试连接多个数据表来创建单个数据表.这是查询.
var row = from r0w1 in dt_vi.AsEnumerable() join r0w2 in dt_workcenter.AsEnumerable() on r0w1.Field("wcID") equals r0w2.Field ("iD") join r0w3 in dt_recipe.AsEnumerable() on r0w1.Field ("curingRecipeID") equals r0w3.Field ("recipe_id") join r0w4 in dt_defect.AsEnumerable() on r0w1.Field ("defectID") equals r0w4.Field ("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没有得到任何价值.可能的原因是什么?
当没有行匹配时,问题是ps.DefaultIfEmpty()
将返回默认值(null
在这种情况下),因此它会抛出该错误.
您可以这样更改: -
r0w3.ItemArray.Concat(r0w4 != null ? r0w4 .ItemArray : new object[] {}))