首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Linq / Linq to Sql来完成此操作?

如何使用Linq / Linq to Sql来完成此操作?
EN

Stack Overflow用户
提问于 2010-02-17 15:33:44
回答 2查看 123关注 0票数 1

我有一个审计表,我正在尝试使用Linq来找出如何获取所有人最近的审计操作。我只是不知道该怎么做。

示例模式

审计表(从技术上讲,它实际上是一个视图)

代码语言:javascript
复制
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

所以,为了结果,我会在...

代码语言:javascript
复制
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

有人能帮帮忙吗?

(哦,如果我需要索引一些东西,请建议哪一列)。

非常感谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-17 15:39:14

我想应该是这样的:

代码语言:javascript
复制
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“记录可能会为您提供所需的一切。下面是解决这两个问题的另一个查询:

代码语言:javascript
复制
var query = from action in db.Actions
            group action by action.UserName into groupedActions
            select groupedActions.OrderByDescending(a => a.CreatedOn).First();

为CreatedOn和UserName添加索引。

票数 4
EN

Stack Overflow用户

发布于 2017-03-28 03:57:49

另一种简单的方法是:

代码语言:javascript
复制
List<Audit> result = ctx.Audit.GroupBy(g => g.UserName)
                        .Select(t => t.OrderByDescending(o => o.CreatedOn)
                                      .Select(s => s)
                                      .First())
                        .ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2278999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档