Прошу простить любую наивность, я новичок в мире C#. Дайте мне знать, если я оставил полезную информацию.Предложение WHERE в запросе LINQ кажется неудачным
Я строй пользовательских SiteMapProvider для портала клиента для Dynamics CRM 2011. Сначала я инициализировать массив:
public Adx_webpage[] WebPages;
который получает населенный таким образом:
public MyProvider()
{
WebPages = (FROM p in CrmContext.Adx_webpageSet WHERE p.Adx_HiddenFromSitemap != true SELECT p).ToArray();
}
Позже, я стараюсь запросить веб-страницы [] следующим образом:
Adx_webpage[] childPages = (FROM p in WebPages WHERE p.adx_parentpageid.Id == page.Id SELECT p).ToArray();
Когда я запускаю это через отладчик, я получаю Nul lReferenceException, которое указывает на условие в моем предложении WHERE, говорящее, что p.adx_parentpageid.Id имеет значение null, что верно для домашней страницы сайта. Что приводит к вопросу:
Зачем этот запрос появляется на домашней странице как p
в моем запросе? Что я недопонимаю?
Вы лениво загружаете свои сущности? Возможно, вам нужно загрузить дочерние объекты, если они все равны нулю. – user1231231412
Является ли страница скрытой от карты сайта? –
Что такое тип данных p.adx_parentpageid.Id? Я думаю, что его фактический p.adx_parentpageid, который является null, и он бросает с вами попытку доступа к свойству Id. Если p.adx_parentpageid может быть пустым, тогда вам нужно закодировать это условие. – user957902