我有一个名为MenuItem的数据库表(MenuItemID,ParentMenuItemID,MenuItemName) . 我想用它来填充Menu控件(可能是.NET Menu控件) .
每个MenuItem都有一个父项 . 如果没有父级,则它是顶级菜单项 . 我已经将LINQ to SQL类映射到MenuItem表 . 由于我的表有一个从ParentMenuItemID到MenuItemID的外键,我自动生成的MenuItem类包含一个MenuItem的集合 . 此集合应包含菜单项的所有子项 .
结果应存储在List中 .
是否可以在一个查询中获取:
-
所有顶级菜单项
-
所有子项到其父对象下收集的顶级菜单项
获取顶级菜单项然后迭代它们并查询每个子项,或者获取所有菜单项然后将它们放在右侧父项中应该不是任何问题 . 但如果这可以在一个查询中完成......我会很高兴:)
2 回答
如果您对Linq to Sql模型有自己的导航属性,那么:
否则你可以用
dataContext.MenuItem.Where(c=>c.ParentMenuItemId==m.MenuItemId)
替换m.Children您可以尝试使用DataLoadOptions.LoadWith方法 .
但是,Microsoft LINQ to SQL Server不支持此方案,仅适用于Oracle,MySQL,PostgreSQL和SQLite的Devart实现 .
Devart团队
http://www.devart.com/dotconnect
适用于Oracle,MySQL,PostgreSQL,SQLite和实体框架以及LINQ to SQL支持的ADO.NET数据提供程序