我在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));
答案 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();