通过LINQ to SQL检索数据

时间:2009-12-31 04:12:23

标签: asp.net vb.net linq web-applications

我在这里遇到了一个奇怪的问题,就像我有一个网站,用户可以在朋友个人资料页面上发表评论。每次用户发表评论我的应用程序都会向该页面所有者发送电子邮件,你知道要通知新的帖子评论他/她的个人资料页面。问题是我想阻止应用程序发送电子邮件,如果该用户刚刚发布了评论说像5小时前/早。这是我使用的功能,试图检查它:


Public Function CheckForNewPost(ByVal arg As String) As Boolean

        Dim x As Integer = 0
        Using dc As New WhatEverDataContext()
            Dim newcomment = From mytable In dc.PostTable _
                           Where mytable.PostingUser.ToLower() = User.Identity.Name.ToLower() And mytable.PageOwner.ToLower() = arg.ToLower() And mytable.PostedDate.AddHours(5) >= DateTime.Now _
                           Select mytable
            For Each comment In newcomment
                x = x + 1
            Next
            If x > 0 Then
         'user has posted a comment recently
                Return True
            Else
                Return False
            End If
        End Using

    End Function

然后我像这样使用它:


  Protected Sub Repeater1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewInsertedEventArgs) Handles Repeater1.ItemInserted
        'send our mail
        Dim PageOwner As String = Request.QueryString.Get("PageOwnerName")
        If CheckForNewPost(PageOwner) = False Then
            SendEMail(PageOwner)
        End If

    End Sub

但是,即使是刚刚提前5小时发布的用户,该应用仍会发送邮件。 你觉得我在这做什么?

2 个答案:

答案 0 :(得分:1)

我认为如果你把条件写成

会更清楚
mytable.PostedDate <= DateTime.Now.AddHours(-5) 

右侧现在称为“五小时前”。

所以整个条件现在读作我的发布日期早于(或等于)五小时前。

答案 1 :(得分:0)

您应该检查mytable.PostedDate.AddHours(5)&lt; = DateTime.Now。我想你只是倒退了。

mytable.PostedDate.AddHours(5) <= DateTime.Now