Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq连接查询错误_C#_Linq_Join - Fatal编程技术网

C# Linq连接查询错误

C# Linq连接查询错误,c#,linq,join,C#,Linq,Join,我正在尝试连接多个数据表以创建单个数据表。这是问题所在 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()

我正在尝试连接多个数据表以创建单个数据表。这是问题所在

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

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

问题是
ps。当没有行匹配时,DefaultIfEmpty()
将返回默认值(
null

您可以这样更改它:-

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

可能是r0w4未获得任何值。。。。您检查过了吗?
DefaultIfEmpty
如果连接失败,将返回
null
,因此您不能直接依赖该对象中的数据。您可能需要执行空检查
r0w3.ItemArray.Concat(r0w4 != null ? r0w4 .ItemArray : new object[] {}))