2014-06-23 77 views
0

我有一个SQL(获取了最新的日期都不同的MID),我想将其转换为LINQ查询和lambda表达式SQL - 转换查询到的LINQ to SQL和lambda表达式

SELECT  MID, MAX(Date) AS 'Date' 
    FROM   TABLE1 
    WHERE  (Status = '1') 
    GROUP BY MID 

我有这lambda但我不知道如何获得MID字段

  var result= (db.TABLE1 
         .Where(x => x.Status == 1) 
         .GroupBy(x => x.MID) 
         .Select(    
           x => x.Max(x=>x.CreatedDate) 
         )).ToList(); 

请咨询如何解决linq查询和lambda的语法。谢谢

回答

0

但我不知道如何让MID场组的

使用键来访问您正在使用的分组列。因此,您按单列进行分组,然后按键将是MID列的值。然后使用匿名对象来选择自定义字段集:

var result = db.TABLE1 
       .Where(x => x.Status == 1) 
       .GroupBy(x => x.MID) 
       .Select(g => new { 
        MID = g.Key,     
        Date = g.Max(x => x.CreatedDate) 
       }).ToList(); 
+1

谢谢Sergey的工作!据我所知,如果我必须由多个字段组合,例如.GroupBy(x => new {x.MID,x.Country})如何指定将MID作为关键字?您能否提供一个示例,谢谢 – Ben

+1

@Ben键将代表用于分组的对象。如果你有两个属性的匿名对象,那么键就是那个对象。 Getting MID看起来像'g.Key.MID' –

+0

您好Sergey,我想检索另一个参数,如果添加在.GroupBy中,然后在.Select中,例如Name = g.Key.Name然后它使用Name和MID作为不同。如何在GroupBy中使用唯一的MID作为独特的并在.Select中检索另一个参数?再次感谢 – Ben