DataTable 为空值数据设置一个值

DataTable set a value for null valued data

我有以下代码。

DataTable dt = (DataTable)Session["Records"];
DataTable SelectedRows = null;

if (somecondition) {
  if (dt.Select("HoursWorked <> ContractHours").Length > 0)
  {
     SelectedRows = dt.Select("HoursWorked <> ContractHours").CopyToDataTable();
  }
}

问题:当前代码不选取“HoursWorked”为空的行。

要求:如何为 ContractHours > 0(最好没有 foreach)的行设置类似 ISNULL(HoursWorked, 0) 的内容?

你可以要求 is not null 比如 var selected = table.Select("HoursWorked is not null AND HoursWorked <> ContractHours");

您完全可以使用函数 ISNULL 来构建您的表达式。请参阅 DataColumn.Expression 文档:

所以如果我理解你的要求你应该写:

if (somecondition) 
{
  string expression = @"HoursWorked <> ContractHours OR (
                        ISNULL(HoursWorked, -1) = -1 AND ContractHours > 0)";

  DataRow[] rows = dt.Select(expression);
  if (rows.Length > 0)
  {
     SelectedRows = rows.CopyToDataTable();
  }
}

请注意,我已经略微改进了您调用 Select 的代码一次,我还将 ISNULL 的 replacememt 值更改为 -1,因为我认为零是 HoursWorked[=12 的合法值=]