Code privatevoid BindMenuData() { string sql ="Select distinct Menu_ParentName,Menu_ChildName From Me_Menu order by Menu_Order desc"; DataTable menudt = db.GetDbTable(sql);//从数据库中查询出该数据库表,GetDbTable()方法请参见wpf动态创建TreeView中的DBbuild类 //LINQ查询 var menuData = from menu in menudt.AsEnumerable() group menu by menu.Field<string>("Menu_ParentName"); //按Menu_ParentName来进行分组 TreeNode node;//父节点 TreeNode childnd;//子节点 foreach (var m in menuData) //循环查询 { node =new TreeNode(); node.Text = m.Key; //获取父节点名 foreach (var mm in m) //在分组中循环查询 { childnd =new TreeNode(); childnd.Text = mm.Field<string>("Menu_ChildName");//获取了节点名 if (childnd.Text !="")//如果子节点名不为空,则将其加入到其对应的父节点中去 { node.Nodes.Add(childnd); } } MenuTView.Nodes.Add(node);//将所有节点添加到TreeView中去,其MenuTView为TreeView控件 } }
之前写了个WPF(Winform)中动态创建TreeView 的随笔,现在再在此文的基础上整一个LINQ的吧,感觉用LINQ简单多了,看来微软是越来越有意思了,呵呵,下面开始吧……首先,先来重新创建一个数据库表,这里的数据库表与之前所创建的表有些不同,大家可以自己对比一下。CodeCode highlighting produced by Actipro CodeHighlighter (