按一个表中的最大项目数对另一个表结果进行排序

本文关键字:项目数 另一个 结果 排序 一个 | 更新日期: 2023-09-27 18:32:16

我有存储我的产品的表格产品,以及另一个表格投票,它与该产品的用户投票相吻合。

Product:
ID
Name
Price
etc..
Votes:
ID
ProductID
IpAdress
DateTimeCreated

如何在 linq to sql 中获得过去 24 小时内投票最多的产品?我真的不太擅长L2S自己弄清楚。

这是我迄今为止得到的最接近的,这个片段应该得到最后 10 票,但我需要在过去 24 小时内获得最高票数:

 var last10Voted = (from vote in context.Votes join product in 
 context.Products on vote.ProductID equals
 product.ID orderby vote.DateTimeCreated select product).Take(10);

按一个表中的最大项目数对另一个表结果进行排序

var last10Voted =
  ( 
    from product in context.Products
    let votes = context.Votes
                       .Where(v=>v.ProductID == product.ID 
                                && v.DateTimeCreated >= DateTime.Now.AddHours(-24))
    orderby votes.Count() descending
    select product
 ).Take(10);
var topVotedProducts = 
    Votes.Where(v => v.DateTimeCreated > DateTime.Now.AddHours(-24))
        .GroupBy(v => v.ProductID)
        .Join(Products, g => g.Key, p => p.ID, (g,p) => new { cnt = g.Count(), prod = p.Name })
        .OrderByDescending(result => result.cnt);

产品:身份证名字价格等。。

票:身份证产品编号地址日期时间创建

var mostVoted =
    from product in context.Products
    let votes = context.Votes.Count(vote => vote.ProductID == product.ID && (DateTime.Now - vote.DateTimeCreated).TotalHours <= 24)
    orderby votes descending
    select product;
var top10 = mostVoted.Take(10);