C# 如何使用Linq通过close获得order的dictinct用户ID

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.

我有一个名为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子句