如果一个表应用了邻接模型(ID,ParentID),那么层次结构如何在Subsonic 3中返回?Subsonic 3和Adjacency模型
回答
所有的类都是partials,所以为你的类创建一个新的部分(假设它是'Category')并创建子集合(称之为SubCategories)。然后,当您将对象加载到内存中时,您可以加载子集合:
var allCategories=Categories.All().ToList();
allCategories.ForEach(x=>x.SubCategories=allCategories.Where(y=>y.CategoryID==x.ParentID));
这是免费的,但这就是主意。
我一直都在使用它。只要阅读所有的行。这就是你在后面的行中所做的事情。我将它们提供给DevExpress树形控件,该控件自动挑选ID和ParentID来显示树。或者用几行递归,你可以遍历树并做任何你喜欢的事情。
var result = from _db.Products select p;
这是我感谢罗布,但我不知道递归函数是否仍然需要?有没有LINQ的替代品?
var allCategories = Table_1.All().ToList();
allCategories.ForEach(x => x.Children = allCategories.Where(y => y.ParentID == x.ID));
var topLevel = allCategories.Where(f => f.ParentID == 0);
s.AppendLine("<ul>");
DoStuff(topLevel);
s.AppendLine("</ul>");
private void DoStuff(IEnumerable<Table_1> toplevel)
{
foreach (var lve in toplevel)
{
s.AppendLine("<li>"+lve.Title);
if (lve.Children.Count() > 0)
{
s.AppendLine("<ul>");
DoStuff(lve.Children);
s.AppendLine("</ul>");
}
s.AppendLine("</li>");
}
}
我建议为此创建一个新问题,您可能会得到更多答案 – 2009-06-10 10:02:09
如果您想使用函数或SP,您*可以*在SQL Server中执行此操作: http://blog.wekeroad.com/ blog/Cursed-Recursiveness-Querying-a-Recursive-Join/ – 2009-06-10 19:01:26
我会坚持我的解决方案我认为 – Jon 2009-06-11 08:46:08
- 1. subsonic asp.net 3层架构对象模型
- 2. Oracle,Subsonic 3和TableSpaceName
- 3. subsonic 3.Save()VS.Update()和.Add()
- 4. Subsonic 3和脚手架
- 5. SubSonic 3和WebApplication安装
- 6. Subsonic 3 LeftOuterJoin
- 7. GroupBy Countwith Subsonic 3
- 8. subsonic 3 oracle
- 9. SubSonic 3.0.0.2/3 | SimpleRepository
- 10. Subsonic 3中的复合类型
- 11. Subsonic 3 t4模板无法编译
- 12. Subsonic 3等效的Subsonic 2 SetColumnValue和GetColumnValue ActiveRecord
- 13. Subsonic 3 - 更新NullReferenceException
- 14. SubSonic 3 IncludeTables配置
- 15. 从breadcrumb /树路径(Adjacency模型)获取项目
- 16. 在jqGrid Treeview Adjacency模型中获取子元素
- 17. Subsonic 3简单的仓库和交易
- 18. SubSonic 3和Linq参数化查询
- 19. MVC 3,defaultRedirect和HandleErrorInfo模型
- 20. Rails 3窗体和模型
- 21. Rails 3:3模型和路由错误
- 22. subsonic 3 - 类型'System.Byte []'的对象不能转换为类型'System.String'
- 23. Subsonic postgreSQL模板
- 24. SubSonic 3 + ActiveRecord问题入门
- 25. SubSonic 3 Visual Studio插件
- 26. SubSonic 3.0.0.2/3 | Structs.tt问题
- 27. SubSonic 3中的Casting问题
- 28. SubSonic 3 Repository - SQLite In-Memory
- 29. Subsonic 3 ActiveRecord Setup()行为
- 30. Subsonic 3与Oracle支持
对我的问题上述我的问题上述任何想法? – Jon 2009-06-09 13:16:53
就像我提到的 - 创建一个单独的类,并通过一个单独的方法访问“结构化”位 - 可能像“GetItemHierarchy”,而不是调用SubSonic核心方法。 – 2009-06-09 19:08:50
即使我创建了一个名为GetItemHeirarchy的方法,我仍然只是将上面的代码放在里面。使用核心All()方法的问题是什么,因为我需要返回所有记录来填充Children集合? – Jon 2009-06-09 20:03:47