Как мне обработать нулевые значения в списке Linq2Sql - PullRequest
1 голос
/ 02 сентября 2011

В моем списке есть несколько полей, в которых некоторые поля имеют нулевое значение, так как у них нет записей в базовой таблице.Поэтому, связывая его с управлением повторителем, я получаю NullReferenceException.

Итак, что мне делать, обрабатывать нуль при связывании или есть какой-то другой подход, чтобы ретранслятор, список данных или сетка просматривали нулевое значение автоматически.

Примечание: я использую <%# Eval("FieldName")%> на своей странице aspx и из базы данных FieldName is null.

Пожалуйста, ведите меня ....

Ответы [ 3 ]

2 голосов
/ 02 сентября 2011

Я изменил этот ответ с момента первого добавления, но он включает обе части моего исходного ответа в более компактной форме. Это обрабатывает как дискретный нуль, так и DBNull.Value.

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

Это немного неэффективно из-за двойного вызова Eval - вы можете обойти это, добавив вспомогательный метод в базовый класс вашего элемента управления.

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

Если поле на самом деле не должно быть нулевым, то у вас должны быть элементы доступа к классу и базе данных, которые предотвращают возникновение нулей.

2 голосов
/ 02 сентября 2011
<%# Eval("FieldName") ?? "" %>
1 голос
/ 02 сентября 2011

Вы можете добавить некоторые вычисляемые свойства к вашему классу сущности.

Вроде так:

public string DisplayName
{
     get
     {
         return this.Name ?? "N/A";
     }
}

Это вернет либо Имя, либо предопределенную строку, если Имя равно нулю.

...