Linq To Sql 如何实现递归查询 树形结构
CREATE TABLE [dbo].[MenuInfo](
[Id] [bigint] PRIMARY KEY IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Parent] [bigint] NOT NULL,
[Type] [int] NULL,
[Url] [varchar](100) NULL,
[Flag] [int] NULL,
[Note] [varchar](200) NULL
)
需求:查询指定节点下的所有节点,即指定节点下的所有子级节点以及子级节点下的子级节点。。。
无限递归直到不存在子级节点。
sql 的实现是这样的
WITH temp
AS
(
--父项
SELECT * FROM MenuInfo WHERE Parent = 3
UNION ALL
--递归结果集中的下级
SELECT m.* FROM MenuInfo AS m
INNER JOIN temp AS child ON m.Parent = child.Id
)
SELECT * FROM temp
请高手赐教linq to sql 语句该如何写
分不多,请见谅。。。
------解决方案--------------------哥,这便是.net砖区,sql建议去sql那边的高手多些!
------解决方案--------------------
你可以把你的逻辑直接写成存储过程,然后在dbml文件内映射此存储过程为相应的方法
然后直接 dataContxt.存储过程名 进行调用,返回最终结果
------解决方案--------------------C# code
public IEnumerable<MenuInfo> GetClassID(int p_id)
{
var query = from c in this.MenuInfo
where c.Parent == (long)p_id
select c;
return query.ToList().Concat(query.ToList().SelectMany(t => GetClassID((int)t.Id)));
}