Linq返回没有后续记录的记录

Tom*_*len 5 c# linq asp.net lambda

我有这个查询,计算用户在我们网站上的总数+ 1:

return db.tblGPlusOneClicks
    .Where(c => 
        c.UserID == UserID
        && c.IsOn
        )
    .Select(c=>c.URLID)
    .Distinct()
    .Count();
Run Code Online (Sandbox Code Playgroud)

数据来自此表:

在此输入图像描述

简单计算不同的URL,其中IsOn = true将显示他们拥有的页数+ 1.但是,该表还通过将值存储IsOn为false 来存储何时取消加上某些内容.

如果我:

  • 加一个我的主页
  • 取消我的主页

在我们的查询中,它不应该将此视为该用户的加号,因为此用户的此URL的最后一个操作是取消加1.同样,如果我:

  • 加一个我的主页
  • 取消我的主页
  • 加一个我的主页
  • 取消我的主页
  • 加一个我的主页

它应该在原始查询中计算,因为该URL的最后一个操作是加1.

如何修改我的查询以计算实例的位置,该实例IsOntrue该用户对该URL的最后一次已知操作?我正在努力编写一个执行此操作的查询.

Mar*_*ers 4

尝试这个:

return db.tblGPlusOneClicks
    .Where(c => c.UserID == UserID)
    .GroupBy(c => c.URLID)
    .Count(g => g.OrderByDescending(c => c.Date).First().IsOn);
Run Code Online (Sandbox Code Playgroud)