Привет У меня есть таблица, где есть свойство RespondB, которое имеет DateTime и является Nullable. Вот LINQ Я пытаюсь запустить над EF6:Nullable DateTime in Where Where in EF Linq Query
IEnumerable<Enquiry> ASAPEnquiries = db.Enquiries
.Where(enq => enq.RespondBy == null && enq.JobCostings.Count == 0)
.OrderBy(enq => enq.FlReference);
Однако, когда я бегу if (ASAPEnquiries.Count() > 0)
я получаю сообщение об ошибке с указанием Nullable object must have a value.
Как бы один запрос к базе данных с помощью LINQ, если вы хотите, чтобы проверить нулевые столбцы DateTime?
спасибо.
EDIT:
SQL, который продуцируется EF при испытании в MSSMS возвращает желаемый результат FYI. SQL Произведено:
SELECT
[Project1].[Id] AS [Id],
[Project1].[FlReference] AS [FlReference],
[Project1].[EnquiryDate] AS [EnquiryDate],
[Project1].[ContactName] AS [ContactName],
[Project1].[ProjectReference] AS [ProjectReference],
[Project1].[EnquiryDetails] AS [EnquiryDetails],
[Project1].[RespondBy] AS [RespondBy],
[Project1].[CreatedBy] AS [CreatedBy],
[Project1].[Created] AS [Created],
[Project1].[ModifiedBy] AS [ModifiedBy],
[Project1].[Modified] AS [Modified],
[Project1].[RowVersion] AS [RowVersion],
[Project1].[Enquiry_Customer] AS [Enquiry_Customer],
[Project1].[Enquiry_EnquiryStatus] AS [Enquiry_EnquiryStatus]
FROM (SELECT
[Extent1].[Id] AS [Id],
[Extent1].[FlReference] AS [FlReference],
[Extent1].[EnquiryDate] AS [EnquiryDate],
[Extent1].[ContactName] AS [ContactName],
[Extent1].[ProjectReference] AS [ProjectReference],
[Extent1].[EnquiryDetails] AS [EnquiryDetails],
[Extent1].[RespondBy] AS [RespondBy],
[Extent1].[CreatedBy] AS [CreatedBy],
[Extent1].[Created] AS [Created],
[Extent1].[ModifiedBy] AS [ModifiedBy],
[Extent1].[Modified] AS [Modified],
[Extent1].[RowVersion] AS [RowVersion],
[Extent1].[Enquiry_Customer] AS [Enquiry_Customer],
[Extent1].[Enquiry_EnquiryStatus] AS [Enquiry_EnquiryStatus],
(SELECT
COUNT(1) AS [A1]
FROM [dbo].[JobCostings] AS [Extent2]
WHERE [Extent1].[Id] = [Extent2].[JobCosting_Enquiry]) AS [C1]
FROM [dbo].[Enquiries] AS [Extent1]
) AS [Project1]
WHERE ([Project1].[RespondBy] IS NULL) AND (0 = [Project1].[C1])
ORDER BY [Project1].[FluidReference] ASC
Кроме того, если я итерацию по коллекции, я не получаю ошибки, так что, кажется, что-то делать с вызовом .Count() на сборе.
https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx –
Спасибо. Я как бы понимаю, почему происходит ошибка, я просто не знаю лучшей практики для достижения того, что я пытаюсь сделать. – paulpitchford
Попробуйте следующее: 'var ASAPEnquiries = db.Enquiries .Where (enq =>! Enq.RespondB.HasValue) .OrderBy (enq => enq.FlReference) .ToList();' просто для отслеживания ошибки. Сообщите нам, если вы получите какие-либо ошибки при переходе по этой линии. –