2013-12-17 63 views
1

我有一个表,其中我有多个行,具有相同的PayFrequencyIdlinq查询选择具有第一排名的记录

我的SQL查询这是为我工作确定为如下

SELECT * 
FROM (SELECT payfrequencyid, 
       customname, 
       payfromdate, 
       paytodate, 
       checkdate, 
       Rank() 
       OVER( 
        partition BY payfrequencyid 
        ORDER BY payfromdate) AS 'RowRank' 
     FROM payfrequencycalendar 
     WHERE ispaid = 0 
       AND companyid = 3) AS T 
WHERE rowrank = 1 

,但我有linq使用此。

我试过这样的东西,但它不适合我。

IList<IPayFrequencyCalendar> objPayFrequencyInfo = 
    objPayFrequencyManager.GetAll() 
     .Where(x => 
      x.CompanyId == SessionWrapper.CompanyId 
      && x.IsPaid == false) 
     .GroupBy(o => o.PayFrequencyId) 
     .OrderBy(x => x.PayFromDate).Take(5).ToList(); 
+0

您在这里'。选择新的'缺少一些代码。它的目的是? –

+0

是的,这就是我正在尝试..所以在发布代码的时候在这里的一些代码之间。 – rahularyansharma

回答

1

试试这个:

IList<IPayFrequencyCalendar> objPayFrequencyInfo = 
    objPayFrequencyManager.GetAll() 
          .Where(x => x.CompanyId == SessionWrapper.CompanyId 
            && x.IsPaid == false) 
          .GroupBy(o => o.PayFrequencyId) 
          .Select(g => g.OrderBy(t => t.PayFromDate).First()) 

          .ToList();