分层结构数据库按Lambda表达式选择 嗨,我的表结构是递归的
ID
PARENTID
UserGROUPNAME
我如何从我的上下文中选择Subset an Id By Lambda Expression像这样
我尝试先选择
var keys = db.UsersGroups.Select(x => x)。Where(u => u.GroupMasterID == 1)。ToArray();
var UsersGroup = db.UsersGroups.Where(x => keys.Contains(x.GroupMasterID));
但我认为它返回错误或只返回2级数据
请帮帮我
答案 0 :(得分:0)
这是你不能做的事情,不要搞乱,用linq。您需要做的是使用可能的common table expression来展平层次结构,然后您就可以编写简单的linq查询。
答案 1 :(得分:0)
最后我创建了一个sql函数
像这样Create FUNCTION [dbo].[GET_USERGROUPLIST]
(
@GROUPID INT
)
RETURNS TABLE
AS
RETURN
(
WITH UsersGroups_CTE AS (
SELECT *
FROM [dbo].[UsersGroups]
WHERE ID = @GROUPID
UNION ALL
SELECT e.ID, e.GroupName, e.ParentID ,e.Status
FROM [dbo].[UsersGroups] e
INNER JOIN UsersGroups_CTE ucte ON ucte.ID = e.ParentID
)
SELECT *
FROM UsersGroups_CTE Where UsersGroups_CTE.Status = 1
);
和Next在我的模型中使用
db.GET_USERGROUPLIST(1);
非常感谢lontivero的建议