2010-04-27 2 views
0

я получаю следующее исключение:левого внешнее объединение в LINQ показывает исключение

Нулевое значение не может быть назначено членом с типом System.Int32, который является не- обнуляемым типа значения.

Ниже мой LINQ заявление, где QuestionID является первичным ключом в моей таблице:

var questionViewsData = 
     from questionViews in objDc.SC_QuestionsViews 
     join questions in objDc.SC_Questions 
     on questionViews.QuestionId equals questions.QuestionId into qs 
     from questions in qs.DefaultIfEmpty() 
     where questionViews.CreatedDate.Date == new DateTime(2010, 4,27) 
     select new 
     { 
      Selected =(questions == null ?-1:questions.QuestionId), 
      QuestioinTitle = questions.Title, 
      VotesCount = questions.VotesCount 
     }; 
+1

Пожалуйста, используйте соответствующую регистрацию, чтобы узнать, какой SQL создается, и отредактируйте вопрос с этим - это облегчит диагностику. –

ответ

0

Для начала, попробуйте запустить его с этим:

select new 
     { 
      Selected = questions.QuestionId, 
      QuestioinTitle = questions.Title, 
      VotesCount = questions.VotesCount 
     }; 

Что вы получаете?

1

Измените строку

where questionViews.CreatedDate.Date == new DateTime(2010, 4,27) 

в

where questionViews.CreatedDate == new DateTime(2010, 4, 27) 

как тест можно запустить

where questionViews.CreatedDate > new DateTime(2010, 4, 26) 

нотабене Если я включаю .Date в оператор LinqPad C#, я получаю следующее сообщение об ошибке и удаление .Date разрешает выполнение оператора.

System.Nullable<System.DateTime>' does not contain a definition for 'Date' and no 
extension method 'Date' accepting a first argument of type 
'System.Nullable<System.DateTime>' could be found 
Смежные вопросы