Возвратите использование пустой строки Linq SQL - Связанной таблице без строк - ASP.NET MVC

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

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

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

5
задан jlnorsworthy 24 February 2010 в 22:46
поделиться

3 ответа

Model.Emails.Select(x => x.EmailAddress).FirstOrDefault() ?? string.Empty
8
ответ дан 13 December 2019 в 22:06
поделиться
<%= Html.Encode((Model.Emails.FirstOrDefault() ?? new Email { EmailAddress = string.Empty }).EmailAddress) %>  

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

1
ответ дан 13 December 2019 в 22:06
поделиться

Мой голос за:

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

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

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

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

1
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: