【问题标题】:MVC Linq query with both group by columns and Max table column具有分组列和最大表列的 MVC Linq 查询
【发布时间】:2015-05-29 15:57:43
【问题描述】:

我正在尝试创建一个查询,以获取 4 列的所有唯一记录以及同一表中的 Id 列。

var newTSOnly = NewExport.GroupBy(g => new { g.TrainingAttended, g.TrainingLocation, g.Trainer, g.DateOfTrainingSession }).ToList();

上面得到了我想要的所有唯一记录,但我找不到方法也得到“NewExports”“Id”字段。

我的目标是为每个唯一记录在不同的表中创建一条记录,但之后我需要 Id 字段来处理其他事情。

我在 sql 查询中对其进行了测试,发现它可以将 MAX(Id) 添加为额外的选择值,但仍试图让它在 linq 中工作。

SELECT [TrainingAttended],[TrainLocation],[Trainer],[DateofTrain], MAX([Id]) As Id
FROM [TrainingExport].[dbo].[MasterRegisterExport]
GROUP BY [TrainingAttended],[TrainLocation],[Trainer],[DateofTrain]

如果有人可以给我指点谢谢,我似乎找不到 linq 等效项?

【问题讨论】:

    标签: c# asp.net-mvc linq max


    【解决方案1】:

    如果您只是按照我的理解尝试获取 ID,那么您应该只添加新的 ID 值:

    var newTSOnly = NewExport.GroupBy(g => new { g.TrainingAttended, g.TrainingLocation, g.Trainer, g.DateOfTrainingSession, g.Id }).ToList();
    

    在 Sql 中获取最大值应该像这样工作:

    var newTSOnly = NewExport.GroupBy(g => new { g.TrainingAttended, g.TrainingLocation, g.Trainer, g.DateOfTrainingSession, g.Max(x => x.Id) }).ToList();
    

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多