仍然包括未找到匹配值的行

Still include rows where no matching values found

我有 2 个 table,其中一个包含以下列:

而另一个具有以下列:

我想做的是创建一个新数据table,它克隆第一个添加了“函数”列的数据,该列的值将来自第二个数据表的 ItemTitle 列。

我是这样做的:

DataTable test = dtFinal.Clone();
test.Columns.Add("Function");

foreach (DataRow row in dtFinal.Rows)
{
    DataRow[] FunctionData = customPropertiesTable.Select(string.Format("ItemId='{0}' AND Title ='Function'", Convert.ToString(row["ItemId"])));

    if (FunctionData != null && FunctionData.Length > 0)
    {
        string detail = FunctionData[0]["ItemTitle"].ToString();
        var lst = row.ItemArray.ToList();
        lst.Add(detail);
        test.Rows.Add(lst.ToArray());

    }

}

现在这确实有效,但这意味着新的 table 将只显示满足该条件的行,我想做的是让新的 table 仍然包括不满足条件的行,所以我可以以类似的方式结束:

如果不满足条件,行的函数值可能为空。我该如何更新我为此所做的工作?

我设法解决了这个问题,只需要:

foreach (DataRow row in dtFinal.Rows)
{
    DataRow[] FunctionData = customPropertiesTable.Select(string.Format("ItemId='{0}' AND Title ='Function'", Convert.ToString(row["ItemId"])));

if (FunctionData != null && FunctionData.Length > 0)
{
    string detail = FunctionData[0]["ItemTitle"].ToString();
    var lst = row.ItemArray.ToList();
    lst.Add(detail);
    test.Rows.Add(lst.ToArray());

}   else {
        string detail = "";
        var lst = row.ItemArray.ToList();
        lst.Add(detail);
        test.Rows.Add(lst.ToArray());
    }

}