仍然包括未找到匹配值的行
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());
}
}
我有 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());
}
}