Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पदानुक्रमित sql डेटा से अनियंत्रित सूची लौटाएं

linq2sql का उपयोग करके आप यह कर सकते हैं:

List<PageInfo> GetHierarchicalPages()
{
   var pages = myContext.PageInfos.ToList();
   var parentPages = pages.Where(p=>p.ParentId == null).ToList();
   foreach(var page in parentPages)
   {
      BuildTree(
        page, 
        p=> p.Pages = pages.Where(child=>p.pageId == child.ParentId).ToList()
        );
   }
}
void BuildTree<T>(T parent, Func<T,List<T>> setAndGetChildrenFunc)
{
   foreach(var child in setAndGetChildrenFunc(parent))
   {
       BuildTree(child, setAndGetChildrenFunc);
   }
}

मान लें कि आप पेजइन्फो में एक पेज प्रॉपर्टी को परिभाषित करते हैं जैसे:

public partial class PageInfo{
   public List<PageInfo> Pages{get;set;}
}

इसे पदानुक्रम पर प्राप्त करने के लिए प्रसंस्करण वेब अनुप्रयोग पक्ष पर हो रहा है, जो एसक्यूएल सर्वर पर अतिरिक्त भार से बचाता है। यह भी ध्यान दें कि इस प्रकार की जानकारी कैश करने के लिए एक आदर्श उम्मीदवार है।

आप रेक्स के बताए अनुसार रेंडर कर सकते हैं। वैकल्पिक रूप से आप इस कार्यान्वयन पर थोड़ा विस्तार कर सकते हैं और इसे पदानुक्रम इंटरफेस का समर्थन कर सकते हैं और एएसपीनेट नियंत्रण का उपयोग कर सकते हैं।

अपडेट 1: किसी टिप्पणी पर आपके द्वारा पूछे गए प्रतिपादन भिन्नता के लिए, आप यह कर सकते हैं:

var sb = new System.IO.StringWriter();
var writer = new HtmlTextWriter(sb);
// rex's rendering code
var html = sb.ToString();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं Microsoft Access 2010 में SQL Server 2008 से ADODB कनेक्शन कैसे सेटअप करूं?

  2. रैंकिंग कार्यों में छँटाई के लिए उपयुक्त सूचकांक

  3. एक nvarchar कॉलम को दिनांक स्वरूप में बदलना

  4. SQL Information_Schema सिंटैक्स सर्वरनाम, टेबल और कॉलम विवरण खोजने के लिए

  5. बल्क इंसर्ट w/.fmt फाइल:ऑपरेटिंग सिस्टम एरर कोड (नल)