获取给定ID列表中每个ID的最新更新记录。 LINQ

时间:2016-08-25 19:09:23

标签: c# linq

我在SQLserver中有一个名为 CandidateContacts 的表,其中包含以下字段 Id,createDate,dateUpdated,address

我正在尝试获取给定ID列表的每个ID的最新更新记录。

List<int?> candidateIds = new List<int?>;

candidateIds .Add(761);
candidateIds .Add(789);
candidateIds .Add(742);

以下语句给出以下错误:

  

运营商&amp;&amp;&amp;&#39;不能应用于类型&#39; bool和&#39;日期时间的操作数?&#39;

var itemsMax = db.CandidateContacts.Where(x => candidateIds.Contains(x.idCandidateLogin) && db.CandidateContacts.Max(y => y.dateUpdated));

1 个答案:

答案 0 :(得分:2)

您可以使用GroupBy并按照dateUpdated按降序排序后获取每个组的第一个元素:

var res = await db.CandidateContacts.Where(p => candidateIds.Contains(p.idCandidateLogin))
                                    .GroupBy(y => y.idCandidateLogin)
                                    .Select(g=>g.OrderByDescending(y => y.dateUpdated).FirstOrDefault()).ToListAsync();