如果一個表應用了鄰接模型(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