【发布时间】:2017-07-12 22:03:41
【问题描述】:
我在 sql Server 中有一个表:
CREATE TABLE AD_Users (
[ImportID] BIGINT NOT NULL,
[LogonID] NVARCHAR (50) NOT NULL,
[EmployeeId] NVARCHAR (64) NULL,
[FirstName] NVARCHAR (64) NULL,
[LastName] NVARCHAR (64) NULL,
......
每个 loginId 有多个版本的数据,由 ImportID 键入。因此,要获取我使用的每个用户的最新信息:
SELECT LogonID,ImportID,EmployeeId, FirstName, LastName
FROM AD_Users adUsers where ImportID = (select Max(ImportID) from
AD_Users a where a.LogonID = adUsers.LogonId);
现在我想用 Linq 做同样的事情。 EF 将其映射到以下数据集:
public partial class ActiveDirectoryUser
{
public long ImportID { get; set; }
public string LogonId { get; set; }
public long EmployeeId{ get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
.......
所以我需要做的就是从此 dbset 中获取具有该 logonid 的最大 importId 的项目。
到目前为止我有:
var latests = this.DbSet.GroupBy(g => g.SystemUniqueUserID)
但我不知道该去哪里。是否可以在 linq 中做我想做的事,还是应该只生成 SQL?
不是How do I get the MAX row with a GROUP BY in LINQ query? 的重复项,因为它不会获取每个项目的最新版本。
【问题讨论】:
-
你检查过下面的答案吗?
-
喜欢我投票失败的方式,因为它是重复的......当它不是时:(
标签: c# entity-framework linq