我有一个审计表,我正在尝试使用Linq来找出如何获取所有人最近的审计操作。我只是不知道该怎么做。
示例模式
审计表(从技术上讲,它实际上是一个视图)
AuditId UserName Action CreatedOn
1 Bob Action1 2000-01-01
2 Bob Action2 2000-01-02
3 Bob Action8 2000-01-03
4 Jane Action1 2000-01-01
5 Bob Action1 2000-01-05
6 Jane Action3 2000-01-05
7 Andrew Action4 2000-01-05
8 Siena Action1 2000-01-06
9 Sarah Action1 2000-01-07
10 Harry Action6 2000-01-09所以,为了结果,我会在...
5, Bob, Action1, 2000-01-05
6, Jane, Action3, 2000-01-05
7, Andrew, Action4, 2000-01-05
8, Siena, Action1, 2000-01-06
9, Sarah, Action1, 2000-01-07
10, Harry, Action6, 2000-01-09有人能帮帮忙吗?
(哦,如果我需要索引一些东西,请建议哪一列)。
非常感谢:)
发布于 2010-02-17 15:39:14
我想应该是这样的:
var query = from action in db.Actions
orderby action.CreatedOn descending
group action by action.UserName into groupedActions
let mostRecent = groupedActions.First()
select new { UserName = groupedActions.Key,
LatestId = mostRecent.AuditId,
LatestAction = mostRecent.Action,
LatestDate = mostRecent.CreatedOn };正如注释中所指出的,这将适用于LINQ to Objects,但分组可能不会保留SQL中的顺序。此外,"mostRecent“记录可能会为您提供所需的一切。下面是解决这两个问题的另一个查询:
var query = from action in db.Actions
group action by action.UserName into groupedActions
select groupedActions.OrderByDescending(a => a.CreatedOn).First();为CreatedOn和UserName添加索引。
发布于 2017-03-28 03:57:49
另一种简单的方法是:
List<Audit> result = ctx.Audit.GroupBy(g => g.UserName)
.Select(t => t.OrderByDescending(o => o.CreatedOn)
.Select(s => s)
.First())
.ToList();https://stackoverflow.com/questions/2278999
复制相似问题