使用 Min 和 Max 函数将 SQL 转换为 LINQ

问题描述 投票:0回答:1

我有以下 SQL 片段,我试图将其转换为 LINQ 查询,作为更复杂查询的一部分,但我不知道如何开始:

SELECT
    AT.PrimaryIDChanged AS PID,
    MAX(AT.ProcessID) AS EventTypeID,
    MIN(AT.AuditDateTime) AS EventDate
FROM
    dbo.AuditTrail AS AT    
WHERE
    AT.AuditTargetTableID = 13
    AND AT.ProcessID IN (30, 31)
GROUP BY
    AT.PrimaryIDChanged 

目标是 EF6。 我还没有代码可以分享

c# linq t-sql entity-framework-6
1个回答
0
投票

大致:

var processIDs = new[] { 30, 31 };

var results =
   context
   .AuditTrail
   .Where(at => at.AuditTargetTableID == 13)
   .Where(at => processIDs.Contains(at.ProcessID))
   .GroupBy(at => at.PrimaryIDChanged)
   .Select(g => new {
      PID = g.Key,
      EventTypeID = g.Select(at => at.ProcessID).DefaultIfEmpty().Max(),
      EventDate = g.Select(at => at.AuditDateTime).DefaultIfEmpty().Min()
   });
© www.soinside.com 2019 - 2024. All rights reserved.