分层结构数据库按Lambda表达式选择

时间:2012-12-08 02:51:40

标签: c# sql lambda

分层结构数据库按Lambda表达式选择 嗨,我的表结构是递归的

ID

PARENTID

UserGROUPNAME

enter image description here

我如何从我的上下文中选择Subset an Id By Lambda Expression像这样

enter image description here

我尝试先选择

var keys = db.UsersGroups.Select(x => x)。Where(u => u.GroupMasterID == 1)。ToArray();

var UsersGroup = db.UsersGroups.Where(x => keys.Contains(x.GroupMasterID));

但我认为它返回错误或只返回2级数据

请帮帮我

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的建议