我有 2 个表,例如让我们假设这是数据:
用户表:
------------------------------
| user_id | username |
------------------------------
| 1 | danny |
| 2 | george |
| 3 | lana |
| 4 | kim |
| 5 | tim |
------------------------------
users_logins 表:
-----------------------------------------------
| record_id | user_id | recorder |
-----------------------------------------------
| 1 | 3 | 2012-11-06 04:18:26 |
| 2 | 3 | 2012-11-06 04:31:05 |
| 3 | 2 | 2012-11-06 03:44:22 |
| 4 | 1 | 2012-11-06 04:18:58 |
| 5 | 1 | 2012-11-06 04:30:15 |
| 6 | 3 | 2012-11-06 04:31:05 | X
| 7 | 1 | 2012-11-06 05:53:47 |
| 8 | 1 | 2012-11-06 05:55:15 | X
| 9 | 4 | 2012-11-06 05:59:31 |
| 10 | 4 | 2012-11-06 06:12:55 | X
-----------------------------------------------
我想显示 3 个最近登录的用户,所以结果将只显示对他们有 X 标记的行,或者用唯一的最近登录的话。
查询会是什么样子?
最佳答案
对对象的 linq 试试这个
(from login in users_logins.OrderByDescending(user => user.recorder)
from user in users
where user.user_id == login.user_id
select user).Distinct().Take(3)
这个查询
1. 首先按日期排序
2. 然后将排序后的登录数据与用户数据连接起来,
3.然后取不同的用户
4. 最后取前3条记录。
以下是替代查询
from login in users_logins.OrderByDescending(user =>user.recorder).GroupBy(user=>user.recorder).SelectMany( users=>users.First()).Take(3)
from user in users
where user.user_id == login.user_id
select user
这个查询
1. 第一类
2. 然后按 user_id 分组
3. 然后取前3条不同user id的记录,
4.然后加入用户数据。
关于c# - 最近用户查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14061201/