【发布时间】:2019-02-05 03:27:36
【问题描述】:
我有一个场景,角色和客户端存储在一个表中,我们必须在字典中获取它,并且必须确保对于一个用户,没有一个客户端有多个角色条目,并且如果它有最新的行版本记录。
在表格内,我们对用户、角色和客户端 ID 以及数据有唯一约束,如下所示:
#1- User,Role, Client Id, TimeStamp, rowVersion
201,READ,101, 1/18/2019, 2
201,WRITE,101, 1/18/2019, 1
201,ADMIN,102, 1/18/2019, 3
202,READ,102, 1/19/2019, 12
对于用户 201 - 客户端 101 只能有一个角色,以防有多个角色 - 排序后选择最新版本。 在上面的#1中,它将计算到下面并存储在字典中 -
201,READ,101, 1/18/2019, 2
201,ADMIN,102, 1/18/2019, 3
如何在查询数据并存储在字典中时使用 LINQ 有效地实现这一点?
编辑 实际上 RowVersion 是 SQL Server 行版本,例如 0x0000000000019E12 只是为了简化我添加了数字来显示。
我们需要记住,对于给定的用户,我们正在为此 RoleScope 进行计算。在我的示例结果中,用户 201 的方法是
201,READ,101, 1/18/2019, 2
201,ADMIN,102, 1/18/2019, 3
以我想在 LINQ 中转换的 SQL 形式回答
select * from(
select UserId,ClientId,RowVersion,RoleCode,row_number()
over(partition by ClientId order by RowVersion desc) as roworder
from dbo.UR where UserId=6
) temp
where roworder=1
【问题讨论】:
-
你尝试过任何 Linq qyery 吗?
-
我只尝试了我在上述问题中更新的 SQL
-
这里是工作解决方案的小提琴 = dotnetfiddle.net/ftQYij
标签: c# .net linq dictionary