I have table =========================== Id PlaceName ParentId 1 Australia Null 2 NSW 1 3 Sa 1 4 Ashfield 2 How can I generate list like below using c# ============================================= Australia NSW, Australia SA, Australia Ashfield, NSW, Australia I will appreciate for your help
2
A
回答
2
如果您RDBMS
支持的RECURSIVE CTE
那就試試這個
架構設置&的樣本數據
CREATE TABLE recursive_cte
(
Id INT,
PlaceName VARCHAR(50),
ParentId INT
)
INSERT recursive_cte
VALUES (1,'Australia',NULL),
(2,'NSW',1),
(3,'Sa',1),
(4,'Ashfield',2)
遞歸CTE查詢:
;WITH cte
AS (SELECT Id,
PlaceName,
ParentId,
Cast(PlaceName AS VARCHAR(8000)) AS Parent_name -- CAST is used to avoid type mismatch between anchor and recursive part
FROM recursive_cte rc
WHERE ParentId IS NULL
UNION ALL
SELECT rc.Id,
rc.PlaceName,
rc.ParentId,
Cast(rc.PlaceName + ',' + Parent_name AS VARCHAR(8000))
FROM cte c
INNER JOIN recursive_cte rc
ON c.id = rc.ParentId)
SELECT *
FROM cte
結果:
╔════╦═══════════╦══════════╦════════════════════════╗
║ Id ║ PlaceName ║ ParentId ║ Parent_name ║
╠════╬═══════════╬══════════╬════════════════════════╣
║ 1 ║ Australia ║ NULL ║ Australia ║
║ 2 ║ NSW ║ 1 ║ NSW,Australia ║
║ 3 ║ Sa ║ 1 ║ Sa,Australia ║
║ 4 ║ Ashfield ║ 2 ║ Ashfield,NSW,Australia ║
╚════╩═══════════╩══════════╩════════════════════════╝
+0
好!在C#中,你必須使用Linq和DataTable,但爲什麼不在SQL中執行。 – numbtongue
+0
@numbtongue是的,SQL中的遞歸CTE被引入來處理分層數據,如上 –
+0
好極了!非常感謝。它真的幫了我很多。 – user1125135
相關問題
- 1. 在VBA中獲取Outlook的自動完成地址列表
- 2. 自動生成IP地址表?
- 3. 自動完成地址解析Android中
- 4. 谷歌地方自動完成:只允許自動完成建議的地址
- 5. 可能自動完成EditTextPreference?
- 6. JQuery自動完成與自動生成的文本框
- 7. 自動完成表中的組合框
- 8. 谷歌地圖自動完成列表
- 9. 自動完成列表不顯示所有可能的完成與BindingSource.Item
- 10. 自動完成動態生成的div
- 11. 使用Lucene .NET的地址的自動完成功能
- 12. 自動完成地址輸入
- 13. 谷歌地址自動完成/ LongLat
- 14. 谷歌自動完成地址形式
- 15. 傳列表 - 自動完成
- 16. 自動生成站點地圖列表
- 17. 谷歌地圖自動完成地址功能
- 18. 自動完成動態生成的文本框
- 19. jquery自動完成動態生成的文本框
- 20. 自動完成框的TabIndex
- 21. 自動生成列的列表視圖
- 22. 在CellEnter的DataGridView中強制自動完成列表框
- 23. 自動完成組合框 - 列表中的項目?
- 24. 確定自動完成ajax文本框中的文本是ajax自動完成文本框中自動完成字符串列表
- 25. 限制Google Places自動完成功能僅返回地址
- 26. Google地圖自動完成功能
- 27. 谷歌地圖自動完成不顯示地址列表使用UpdatePanel
- 28. javascript中的城市/地址搜索自動完成
- 29. 來自Outlook地址簿的自動完成源
- 30. 這是可能的dropdownlist與自動完成和複選框?
因爲誰也不知道,如果艾士菲是在新南威爾士州或SA城市的方式。您還需要提供Parent表。 – numbtongue
有Ashfield的父母身份證,這是NSW的Id,NSW的父母身份證是1,這又是澳大利亞的Id,因此得到了澳大利亞的Ashfield, – user1125135
您正在使用哪個'RDBMS' –