Сравнение с пустым указателем в linq

Я - useing EF как ORM. У меня есть стол "Меню" в моей базе данных с колонкой "parentID" (nvarchar), который может быть ПУСТЫМ. Я хочу, получают все меню, у которых есть parentId == ПУСТОЙ УКАЗАТЕЛЬ. Когда я пишу это, это - работа (у меню есть все nesseccary меню):

using (var db = new MyDbContext())
{                    
    IEnumerable menus = db.Menus.Where(m => m.ParentId == null).ToList();
}

Но этот код не работает (меню равняется пустому указателю):

using (var db = new MyDbContext())
{    
    string parentId = null;
    IEnumerable menus = db.Menus.Where(m => m.ParentId == parentId).ToList();                    
}

Кто-либо может объяснить почему?

0
Вы уверены, что это пустое и не пустой список? Кажется странным, что ToList() должен возвращать пустой указатель когда-либо. Кроме того, вы уверенный, что у вас есть соответствие пунктам с ' parentId' быть используемым?
добавлено автор Justin Harvey, источник
добавлено автор Julien Lebosquain, источник
Жюльен Лебоскен, спасибо очень много! It' s, что я нахожу.
добавлено автор Ilya Shpakovsky, источник

2 ответы

1) Когда вы пишете:

.Where(m => m.ParentId == parentId)

это преобразовывает в T-SQL как:

WHERE ParentId=null -- incorrect T-SQ evaluation against NULL

2) Когда вы пишете:

.Where(m => m.ParentId == null)

это преобразовывает в T-SQL как:

WHERE ParentId IS NULL -- correct T-SQL evaluation against NULL
1
добавлено
string parentId == null;

должен быть:

string parentId = null;
0
добавлено
Только на почте? Проблема все еще происходит?
добавлено автор Beachwalker, источник
Год, я теперь:) Извините, у меня есть ошибка на почте.
добавлено автор Ilya Shpakovsky, источник
Да, только на почте
добавлено автор Ilya Shpakovsky, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot