【问题标题】:Retrieving data through LINQ to SQL通过 LINQ to SQL 检索数据
【发布时间】:2009-12-31 04:12:22
【问题描述】:

我在这里遇到了一个奇怪的问题,就像我有一个用户可以在朋友个人资料页面上发布 cmets 的网站。每次用户发表评论时,我的应用程序都会向该页面所有者发送电子邮件,您知道通知新发布的在他/她的个人资料页面上发表评论。问题是,如果该用户最近发表了评论,比如 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 小时前发布了邮件,该应用程序仍在发送邮件。 你觉得我在这里做什么?

【问题讨论】:

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


    【解决方案1】:

    我想如果你把你的条件写成这样会更清楚

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

    因为右侧现在读作“五小时前”。

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

    【讨论】:

      【解决方案2】:

      您应该检查 mytable.PostedDate.AddHours(5)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-02
        • 2011-08-22
        • 1970-01-01
        • 2011-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多