C# SQL-将查询转换为linq到SQL和lambda表达式

C# SQL-将查询转换为linq到SQL和lambda表达式,c#,sql,linq,linq-to-sql,C#,Sql,Linq,Linq To Sql,我有一个sql(使用最新日期获取所有不同的MID),我想将其转换为linq查询和lambda表达式 SELECT MID, MAX(Date) AS 'Date' FROM TABLE1 WHERE (Status = '1') GROUP BY MID 我有这个兰姆达,但我不知道如何得到中场 var result= (db.TABLE1 .Where(x => x.St

我有一个sql(使用最新日期获取所有不同的MID),我想将其转换为linq查询和lambda表达式

  SELECT     MID, MAX(Date) AS 'Date'
  FROM         TABLE1
  WHERE     (Status = '1')
  GROUP BY MID
我有这个兰姆达,但我不知道如何得到中场

            var result= (db.TABLE1
                       .Where(x => x.Status == 1)
                       .GroupBy(x => x.MID)
                       .Select(                
                               x => x.Max(x=>x.CreatedDate)
                       )).ToList();
请建议如何修复linq查询和lambda的语法。多谢各位

但是我不知道如何打中场

            var result= (db.TABLE1
                       .Where(x => x.Status == 1)
                       .GroupBy(x => x.MID)
                       .Select(                
                               x => x.Max(x=>x.CreatedDate)
                       )).ToList();
使用组的键访问用于分组的列。所以你们是按单列分组的,那个么键将是中间列的值。然后使用匿名对象选择自定义字段集:

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();

谢谢谢尔盖的作品!据我所知,如果我必须按多个字段进行分组,例如,groupBy(x=>new{x.MID,x.Country}),我将如何指定将MID作为键?你能举个例子吗,谢谢you@Ben键将表示用于分组的对象。若您有两个属性的匿名对象,那个么key就是那个对象。获取MID类似于
g.Key.MID
Hi Sergey,我想检索另一个参数,如果在.GroupBy中添加,然后在.Select中选择,例如Name=g.Key.Name,那么它使用Name和MID作为不同的参数。如何在GroupBy中仅使用MID作为distinct并在.Select中检索另一个参数?谢谢again@Ben如果您只在GroupBy中使用MID,那么每个组可以(而且我认为应该)包含多个实体。每个实体都有自己的名称。如果需要所有名称,可以使用
g.Select(x=>x.Name)
I.g.Select(x=>x.Name),结果是System.Collections.Generic.List`1[System.String]。我尝试了g.FirstOrDefault().Name,希望它能奏效,因为这是正确的方法。谢谢