Проверка на нулевое значение с помощью DataTable.Select

Я использую DataTable выбрать как это:

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

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

У меня есть просмотр списка, где я проверяю значение, которое содержится в datarows, которые я использую в списке, и я проверяю значение следующим образом:

<%# 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 ответа

Решение

CopyToDataTable должен решить проблему:

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

Выполнение этого в codebehind работало, но кажется странным, что я не могу просто выполнить встроенную проверку в коде разметки.

foreach (DataRow r in rows)
{
    if (r["Title"] == DBNull.Value)
        r["Title"] = "";
}
Другие вопросы по тегам