C# 如何实现递归linq函数?
我想做一个菜单,这是我的代码。我需要递归函数C# 如何实现递归linq函数?,c#,linq,recursion,drop-down-menu,submenu,C#,Linq,Recursion,Drop Down Menu,Submenu,我想做一个菜单,这是我的代码。我需要递归函数 var newTopMenu = new TopMenuVm { TopMenus = (from amp in allMasterPages orderby amp.DisplayOrder select new TopMenuVm {
var newTopMenu = new TopMenuVm
{
TopMenus = (from amp in allMasterPages
orderby amp.DisplayOrder
select new TopMenuVm
{
DisplayOrder = amp.DisplayOrder,
Url = string.IsNullOrEmpty(amp.Url) ? GenerateUrl(amp.Page1.OrderBy(x => x.DisplayOrder).FirstOrDefault()) : amp.Url,
PageId = amp.PageId,
PageTitle = amp.PageTitle,
TopMenus = (from submenu in amp.Page1
orderby amp.DisplayOrder
select new TopMenuVm
{
DisplayOrder = submenu.DisplayOrder,
PageTitle = submenu.PageTitle,
PageId = submenu.PageId,
Url = string.IsNullOrEmpty(submenu.Url) ? GenerateUrl(submenu) : submenu.Url,
}).ToList()//Here is go on infinite...,
}).ToList()
};
我怎样才能用linq做到这一点,请帮助……你要找的是这样的东西吗
// allMasterPages is type List<MyPage> - change to whatever it really is
Func<List<MyPage>, List<TopMenuVM>> funcTopMenuVM = null;
funcTopMenuVM = ((pages) => {
return
(from amp in pages
orderby amp.DisplayOrder
select new TopMenuVM()
{
DisplayOrder = amp.DisplayOrder,
Url = string.IsNullOrEmpty(amp.Url) ? GenerateUrl(amp.Page1.OrderBy(x => x.DisplayOrder).FirstOrDefault()) : amp.Url,
PageId = amp.PageId,
PageTitle = amp.PageTitle,
TopMenus = funcTopMenuVM(amp.Page1)
}).ToList();
});
var newTopMenu = new TopMenuVM()
{
TopMenus = funcTopMenuVM(allMasterPages)
};
//所有母版页都是类型列表-更改为真正的类型
Func funcTopMenuVM=null;
funcTopMenuVM=((页面)=>{
返回
(来自第页中的amp)
orderby amp.DisplayOrder
选择新建TopMenuVM()
{
DisplayOrder=amp.DisplayOrder,
Url=string.IsNullOrEmpty(amp.Url)?GenerateUrl(amp.Page1.OrderBy(x=>x.DisplayOrder).FirstOrDefault()):amp.Url,
PageId=amp.PageId,
PageTitle=amp.PageTitle,
TopMenus=funcTopMenuVM(amp.Page1)
}).ToList();
});
var newTopMenu=newtopmenuvm()
{
TopMenus=funcTopMenuVM(所有母版页)
};
当然,它不必是Func,它可以是一个常规方法,返回一个列表并获取一个列表(或其他所有母版页)。你能发布你的数据类吗?以及
allMasterPages
变量的类型。