避免实体查询没有结果时出现错误

发布于 2024-10-22 01:26:38 字数 639 浏览 1 评论 0原文

我有一个简单的实体查询:

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

I have a simple Entity query:

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

I then check whether one of the result values is more recent than six months ago using an if..then like so:

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

However, if there are no results returned this will return an error. Is there a way for me to tell it to act as if the date is older than six months if there is no value at all? e.g., could I in pseudo do something like:

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

End If

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只等公子 2024-10-29 01:26:39

您正在使用 First 扩展方法,如果没有结果,该方法将会失败。您可以这样做:

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

如果没有结果,FirstOrDefault 将返回 Nothing,而不是抛出异常。

You're using the First extension method, which will go bang if there are no results. You could do:

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

FirstOrDefault will return Nothing if there are no results, instead of throwing an exception.

苏大泽ㄣ 2024-10-29 01:26:39

使用 FirstOrDefault 而不是 First。然后你可以设置默认返回的内容

Use FirstOrDefault instead of First. Then you can setup what default returns

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文