Избегайте ошибок, когда нет результатов из Entity Query - PullRequest
0 голосов
/ 14 марта 2011

У меня есть простой запрос сущности:

Dim rhcexists = From p In dbContracts.Signatures _
                    Where p.StudentID = people_code_id _
                    And p.ContractType = "rhc" _
                    Order By p.ID Descending _
                    Select p

Затем я проверяю, является ли одно из значений результата более поздним, чем шесть месяцев назад, используя if..then, например:

If rhcexists.First.SignatureDate > Date.Today.AddMonths(-6) Then
End If

Однако, если не будет возвращено никаких результатов, это вернет ошибку. Есть ли способ для меня, чтобы сказать, чтобы действовать так, как если бы дата старше шести месяцев, если нет никакой ценности вообще? например, могу ли я в псевдо сделать что-то вроде:

If Exists(rhcexists.First.SignatureDate, Date.Today.AddMonths(-8)) > Date.Today.AddMonths(-6) Then

End If

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Вы используете метод расширения First, который будет безуспешным, если нет результатов. Вы могли бы сделать:

Dim first = rhcexists.FirstOrDefault()
If first IsNot Nothing AndAlso first.SignatureDate > Date.Today.AddMonths(-6) Then
    ' Do stuff here
End If

FirstOrDefault вернет Nothing, если нет результатов, вместо выдачи исключения.

1 голос
/ 14 марта 2011

Используйте FirstOrDefault вместо First.Затем вы можете настроить, что по умолчанию возвращает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...