C# 如何使用Linq通过close获得order的dictinct用户ID
我有一个名为info的表,它的数据如下: FKUserID 完成时间 类型 1. 2021-03-10 12:56:00.423 5. 245 2021-03-10 12:46:46.977 5. 1. 2021-03-10 12:44:53.683 5. 1. 2021-03-10 12:40:54.733 5. 1. 2021-03-10 12:35:26.307 5. 245 2021-03-10 11:11:33.887 5. 245 2021-03-10 10:18:11.403 5. 像这样的C# 如何使用Linq通过close获得order的dictinct用户ID,c#,sql,linq,C#,Sql,Linq,我有一个名为info的表,它的数据如下: FKUserID 完成时间 类型 1. 2021-03-10 12:56:00.423 5. 245 2021-03-10 12:46:46.977 5. 1. 2021-03-10 12:44:53.683 5. 1. 2021-03-10 12:40:54.733 5. 1. 2021-03-10 12:35:26.307 5. 245 2021-03-10 11:11:33.887 5. 245 2021-03-10 10:18:11.403 5.
var d = new DateTime(2021, 3, 10);
var d2 = d.AddDays(1);
dbContext.Infos
.Where(i => i.Status == 5 && i.CompletedTime >= d && i.CompletedTime < d2)
.GroupBy(i => i.FkUserId)
.Select(g => new {
FkUserId = g.Key,
CompletedTime = g.Max(g2 => g2.CompletedTime)
}
);
vard=新日期时间(2021,3,10);
var d2=d.AddDays(1);
dbContext.Infos
其中(i=>i.Status==5&&i.CompletedTime>=d&&i.CompletedTimei.FkUserId)
.Select(g=>new{
FkUserId=g.密钥,
CompletedTime=g.Max(g2=>g2.CompletedTime)
}
);
您可以使用以下查询。以下查询实现您的SQL查询
var query = context.Info.GroupBy(a => a.FKUserID)
.Join(context.Info,
left => left.Key,
right => right.FKUserID,
(left, right) => new { left, right })
.Where(a => a.right.CompletedTime.ToShortDateString() == "2021-03-10" && a.right.Status == 5)
.Select(a => new
{
FKUserID = a.left.Key,
CompletedTime = a.left.Max(x => x.CompletedTime)
}).ToList();
我想你的答案已经在这里了:我可以在何处添加status=5逻辑,请参见edited in where子句