如何在LINQ中根据日期和时间查询数据

时间:2012-10-08 07:42:37

标签: asp.net linq

我正在使用LINQ在asp mvc中进行服务层实现。例如,有像Stackoverflow这样的用户,帖子和投票。每个用户都有从upvotes和downvotes获得的声誉。

此投票表具有以下属性:id,postTypeId,voteTypeId,creationDate,VoterId

此Post表具有以下属性:id,userId ....

和用户表包括:id

对于每个upvote给出2个标记,对于每个downvote 1标记减少

我需要如何用Linq编写查询如何查询,以显示声誉变化: 每个日期,时间和日期的声誉,无论是upvote还是downvote和相关帖子

这些是我要使用的属性,

var jointable = from vote in _dataContext.Votes
    join post in _dataContext.Posts on vote.PostId equals post.Id
    where vote.VoterId== id
    select new
    {  
        vote.Id,
        vote.CreationDate,
        vote.PostId,
        vote.VoteTypeId,
        post.PostTypeId,
        post.Title,
        post.IsAnonymous 
    };    

在此之后,有人可以帮我查询这些属性以将它们作为对象返回吗?

1 个答案:

答案 0 :(得分:0)

你已经离你已经不远了,你只需要日期范围条件,即

var startDate = ...; // assume this will be selected from the UI
// assuming we are working with UTC (if you aren't, you should be)
startDate = startDate.ToUniversalTime();
var endDate = startDate.AddHours(24); // include full 24 hour day
var jointable = from vote in _dataContext.Votes
    join post in _dataContext.Posts on vote.PostId equals post.Id
    where vote.VoterId == id && vote.CreationDate >= startDate && vote.CreationDate < endDate
    select new
    {  
        vote.Id,
        vote.CreationDate,
        vote.PostId,
        vote.VoteTypeId,
        post.PostTypeId,
        post.Title,
        post.IsAnonymous 
    };