1

层次结构数据库通过 Lambda 表达式选择嗨我的表结构是递归的

ID

父母ID

用户组名

在此处输入图像描述

如何像这样通过 Lambda 表达式从我的上下文中选择子集 ID

在此处输入图像描述

我尝试先选择

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

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

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

请帮我

4

2 回答 2

0

使用 linq 是您无法做到的,如果不搞砸的话。您所要做的就是使用一个可能的公共表表达式来展平层次结构,然后您将能够编写一个简单的 linq 查询。

于 2012-12-08T03:21:08.610 回答
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
); 

然后像这样在我的模型中使用

db.GET_USERGROUPLIST(1);

非常感谢 lontivero 的建议

于 2012-12-08T08:59:45.723 回答