DataTable为空值数据设置一个值



我有以下代码:

DataTable dt = (DataTable)Session["Records"];
DataTable SelectedRows = null;
if (somecondition) {
if (dt.Select("HoursWorked <> ContractHours").Length > 0)
{
SelectedRows = dt.Select("HoursWorked <> ContractHours").CopyToDataTable();
}
}

问题:当前的代码不会选择"hoursworkked"是零。

要求:如何设置像ISNULL(HoursWorked, 0)的行,其中ContractHours>0(最好没有foreach)?

您完全可以使用Function ISNULL来构建表达式。见上。表达文档:

所以如果我明白你的要求,你应该写:

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为-1,因为我认为零是一个合法的值

小时工作

您可以要求is not nullvar selected = table.Select("HoursWorked is not null AND HoursWorked <> ContractHours");

最新更新