Софтуерно Инженерство
Loading...
+ Нов въпрос
Hristo_Penchev avatar Hristo_Penchev 388 Точки

Селектиране на навигационно пропърти, когато не е null

Здравейте,

имаме следната заявка:

var sortedAds = context.Ads
                .ToList()
                .Where(a => a.AdStatus.Status == "Published")
                .Select(a => new
                             {
                                 a.Title,
                                 Category = a.Category.Name,
                                 Town = a.Town.Name,
                                 Date = a.Date
                             })
                .ToList()
                .OrderBy(a => a.Date);

 

Проблемът тук е, че когато конкретния ad няма Category или Town ми дава Null Reference Exception, понеже на null няма как да му търси пропърти name. Как да го излъжа да търси Category.Name само когато Category != null, а иначе да присвои null? Не успях да формулирам добре въпроса си в гугъл явно, намерих само чист sql. 

Тагове:
0
Databases Basics
a.angelov avatar a.angelov 1332 Точки

Примерно:

Category = a.Categories != null ? a.Categories.Name : "no category"

1
Hristo_Penchev avatar Hristo_Penchev 388 Точки

Този синтаксис не го знаех. Мерси!

-2
RoYaL avatar RoYaL SoftUni Team Trainer 6796 Точки

Тернарен оператор? Лекцията е Оператори и изрази, Programming Basics

5
verito898 avatar verito898 SoftUni Team 290 Точки

var sortedAds = context.Ads
                .ToList()
                .Where(a => a.AdStatus.Status == "Published")
                .Select(a => new
                {
                    TItle = a.Title,
                    Category=(a.Category == null ? " null " : a.Category.Name),
                    Town = (a.Town ==null ? " null " : a.Town.Name),
                    Date = a.Date
                })
                .ToList()
                .OrderBy(a => a.Date);

0
Hristo_Penchev avatar Hristo_Penchev 388 Точки

По начина на Ангелов стана. Опитвам и Category = a.Category?.Name, но не се компилира.

-2
RoYaL avatar RoYaL SoftUni Team Trainer 6796 Точки

Не напразно пише "в новия C#"

1
Hristo_Penchev avatar Hristo_Penchev 388 Точки

Новия в смисъл, че не е релийзнат още?

-2