Linq递归查找数据库树列表(详见日志【Linq递归初始化easyUI Tree数据(.NET MVC+easyUI+Linq)】),并绑定到asp.net的TreeView服务器控件。
代码如下:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public CompanyDataDataContext _db = new CompanyDataDataContext();
public class TreeViewClass
{
public TreeViewClass(int id, string url, string title, List<TreeViewClass> children)
{
this.id = id;
this.url = url;
this.title = title;
this.children = children;
}
public int id { get; set; }
public string url { get; set; }
public string title { get; set; }
public List<TreeViewClass> children { get; set; }
}
#region 初始化树列表
/// <summary>
/// 初始化树列表
/// </summary>
/// <param name="parentid">父节点ID</param>
/// <returns></returns>
public List<TreeViewClass> InitTree(int parentid)
{
Func<Menu, bool> where = T => T.ParentID.Equals(parentid);
Func<Menu, object> orderby = T => T.SortIndex;
Func<Menu, TreeViewClass> select = T => new TreeViewClass
(
T.ID,
T.Url,
T.Title,
InitTree(T.ID) //递归树子节点,妥!
); //尝试利用Func委托定义lamdba表达式作为参数传进Linq
/*var entity = _db.Menus.Where(T => T.ParentID.Equals(parentid)).OrderBy(T => T.SortIndex).Select(T => new TreeViewClass
(
T.ID,
T.Url,
T.Title,
InitTree(T.ID) //递归树子节点,妥!
));*/
var entity = _db.Menus.Where(where).OrderBy(orderby).Select(select);
if (entity.Count() > 0)
{
return entity.ToList<TreeViewClass>();
}
else return null;
}
#endregion
#region 初始化TreeView树列表
/// <summary>
/// 初始化TreeView树列表
/// </summary>
/// <param name="parentid">父节点ID</param>
/// <returns></returns>
public void InitTreeView(int Parentid, TreeView tv, TreeNode tnode)
{
foreach (var t in InitTree(Parentid))
{
TreeNode tn = new TreeNode();
tn.Value = t.id.ToString().Trim();
tn.Text = t.title;
tn.NavigateUrl = t.url;
tn.Target = "main";
if (tnode == null)
{
tv.Nodes.Add(tn);
}
else
{
tnode.ChildNodes.Add(tn);
}
try
{
if (t.children.Count > 0)
{
InitTreeView(t.id, tv, tn); //递归树子节点
}
}
catch { }
}
}
#endregion
效果如下图:
Menu表:
![](https://i-blog.csdnimg.cn/blog_migrate/060860fea84a09c407583fc5ec6f56a0.png)
Web:
![](https://i-blog.csdnimg.cn/blog_migrate/fbc27340cab7192fec55f1d80259346b.jpeg)