代码之家  ›  专栏  ›  技术社区  ›  Florin M.

使用linq进行分组和排序

  •  -1
  • Florin M.  · 技术社区  · 6 年前

    Rents People

    我是linq语句编程的新手。下面是我要转换为linq的sql查询:

    select top 20 r.partnerid, max(p.PartnerName )
    from Rents r join People p on p.Partnerid = r.Partnerid
    where r.partnerid > 0 
    group by  r.partnerid
    order by  count(r.rentid) desc
    

    var linqQuery = from r in meta.Rents 
                 join p in meta.People on r.PartnerId equals p.PartnerId
                 where r.PartnerId > 0 
                 group r by r.PartnerId into pp
                 select new
                 {
                     PartnerId = pp.Key,
                     PartnerName = ??? //  PartnerName is a field/column from People
                 } 
                 // order by ?  
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Cedric Mendelin    6 年前

    你可以这样做

    PartnerName = pp.Select(p => p.PartnerName).FirstOrDefault()
    

    你将从这里得到一些进一步的解释和一把小提琴: Group by in LINQ

        2
  •  0
  •   Jamiec    6 年前

    您可能需要从分组列表中获取第一个

    PartnerName = pp.First().PartnerName
    

    或者,也可以像原始查询一样使用max

    PartnerName = pp.Max(x => x.PartnerName)