使用linq分组和排序

时间:2018-09-27 07:24:32

标签: c# asp.net linq

有2个表:RentsPeople

我是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

我尝试过类似的操作,但是我不知道如何将People.PartnerName放入select语句:

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 个答案:

答案 0 :(得分:0)

您可能想从分组列表中获得第一个

PartnerName = pp.First().PartnerName

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

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

答案 1 :(得分:0)

您可以做类似的事情

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

从这里您将获得一些进一步的解释和不断变化的提琴: Group by in LINQ