LINQ GroupBy和Filter On a Column并为多行选择First



我在数据库中有一些不同到期日的人的记录。一个人可以有多个不同截止日期的记录。我必须写一个查询来查找每个决斗日期最低的人的所有记录。当某个特定人的截止日期不同时,我能够编写带有确切结果的查询。如果我有一个具有相同决斗日期的人的多个记录,并且恰好是最低日期,那么查询将为同一个人返回多行。在这种情况下,我应该获得ID最低的记录(ID是记录表中的一个整数和主键)。DueDate是一个纯日期字段,不包含时间部分。

除了上面提到的场景之外,下面的查询非常有效。allActiveTriggers是一个记录集合。我使用了另一个查询来获取此集合。

var activeDistinct = (from at in allActiveTriggers
                         group at by at.Person into dt
                         let date = dt.Min(d => d.DueDate)
                         from t in dt
                         where t.DueDate == date
                         select t).ToList();

有人能告诉我该如何处理这个查询吗?

感谢

只需按日期和id订购每组,然后从订购组中选择第一个项目:

from at in allActiveTriggers
group at by at.Person into g
select g.OrderBy(at => at.DueDate).ThenBy(at => at.ID).First()

相关内容

  • 没有找到相关文章

最新更新