使用DataTable.Select检查空值

时间:2017-11-17 15:52:08

标签: c# asp.net datatable.select

我正在使用这样的DataTable选择:

DataRow[] rows = employees.Select("Name LIKE '%" + TB_Search.Text + "%'");

LV_Employees.DataSource = rows;
LV_Employees.DataBind();

我有一个listview,我正在检查我在列表中使用的数据行中包含的值,我正在检查这样的值:

<%# Eval("Title") == DBNull.Value ? "" : Eval("Title") %>

但是当我这样做时,我仍然会收到此错误:

  

无法将'System.DBNull'类型的对象强制转换为'System.String'。

我也尝试检查Eval("Title") == null并得到了同样的错误。我不确定如何检查可以解决此问题的空值。

我也尝试过的东西仍然给出了同样的错误:

(Eval("Title") as string) ?? ""

Convert.IsDBNull(Eval("Title")) ? "" : "test"

string.IsNullOrEmpty(Eval("Title").ToString()) ? "" : "test"

Eval("Title").ToString().IsNullOrEmpty() ? "" : "test"

2 个答案:

答案 0 :(得分:1)

CopyToDataTable应解决此问题:

LV_Employees.DataSource = employees.Select("Name LIKE '%" + TB_Search.Text + "%'")
    .CopyToDataTable();
LV_Employees.DataBind();

答案 1 :(得分:0)

在代码隐藏中执行此操作有效,但似乎很奇怪我无法在标记代码中进行内联检查。

foreach (DataRow r in rows)
{
    if (r["Title"] == DBNull.Value)
        r["Title"] = "";
}