我正在尝试加入多个数据表以创建单个数据表。这是查询。
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 没有获得任何值(value)。可能的原因是什么?
最佳答案
问题是 ps.DefaultIfEmpty()
将在没有行匹配时返回默认值(在本例中为 null
),因此它会抛出该错误。
你可以像这样改变它:-
r0w3.ItemArray.Concat(r0w4 != null ? r0w4 .ItemArray : new object[] {}))