Вернуть пустую строку, используя Linq to SQL - Связанная таблица без строк - ASP.Net MVC - PullRequest
5 голосов
/ 25 февраля 2010

У меня есть отношения 1 ко многим со следующими таблицами - Персона и Электронная почта. При использовании linq для sql и ASP.Net MVC я хотел бы показать первое электронное письмо или пустую строку в моем представлении Person , используя такой код:

<%= Html.Encode(Model.Emails.FirstOrDefault().EmailAddress) %>

В тех случаях, когда строк электронной почты нет, я получаю исключение NullReferenceException. Я могу вернуть нулевые безопасные значения из SQL, используя view или sproc, но я хотел бы просто придерживаться универсальных объектов linq to sql, привязанных к таблицам.

Ответы [ 3 ]

8 голосов
/ 25 февраля 2010
Model.Emails.Select(x => x.EmailAddress).FirstOrDefault() ?? string.Empty
1 голос
/ 25 февраля 2010

Мой голос за:

Model.Emails.Select(z => z.EmailAddress).DefaultIfEmpty("zzz").FirstOrDefault();

Я думал, что вы можете сделать все это внутри FirstOrDefault, но я ошибся - о! Однако я также забыл, что когда вы используете DefaultIfEmpty, вы можете просто вызвать First ().

Model.Emails.Select(z => z.EmailAddress).DefaultIfEmpty("zzz").First();

Конечно, замените ZZZ просто "" (не string.empty, это не нужно), но приятно видеть те записи, в которых по умолчанию выбирается explicity, когда вы впервые пишете его.

1 голос
/ 25 февраля 2010
<%= Html.Encode((Model.Emails.FirstOrDefault() ?? new Email { EmailAddress = string.Empty }).EmailAddress) %>  

Будет работать, но не супер, чтобы читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...