मैं कुछ डेटा गतिशील रूप से पुन: संरचना करने के लिए कोशिश कर रहा हूँ एक treeview होगा उपयोगकर्ता द्वारा समूह के लिए निम्न आयाम डेटा के तीन अप करने के लिए चुनने की अनुमति देता है, जिसमें दिखाया जा सकता है:बनाएं GroupBy वक्तव्य गतिशील रूप
Organisation
Company
Site
Division
Department
तो उदाहरण के लिए, यदि उपयोगकर्ता का चयन करना था कि वे कंपनी द्वारा समूह करना चाहते हैं तो साइट तो डिवीजन ... निम्नलिखित कोड आवश्यक समूह निष्पादित करेगा।
var entities = orgEntities
// Grouping Level 1
.GroupBy(o => new { o.CompanyID, o.CompanyName })
.Select(grp1 => new TreeViewItem
{
CompanyID = grp1.Key.CompanyID,
DisplayName = grp1.Key.CompanyName,
ItemTypeEnum = TreeViewItemType.Company,
SubItems = grp1
// Grouping Level 2
.GroupBy(o => new { o.SiteID, o.SiteName })
.Select(grp2 => new TreeViewItem
{
SiteID = grp2.Key.SiteID,
DisplayName = grp2.Key.SiteName,
ItemTypeEnum = TreeViewItemType.Site,
SubItems = grp2
// Grouping Level 3
.GroupBy(o => new { o.Division })
.Select(grp3 => new TreeViewItem
{
DisplayName = grp3.Key.Division,
ItemTypeEnum = TreeViewItemType.Division,
}).ToList()
}).ToList()
})
.ToList();
यह इस तरह एक structre देना होगा:
+ Company A
+ Site A
+ Division 1
+ Division 2
+ Site B
+ Division 1
+ Company B
+ Site C
+ Division 2
+ Company C
+ Site D
बहरहाल, यह सिर्फ मेरे संयोजनों की एक बड़ी संख्या के साथ प्रदान करता है।
मैं इसे किसी ऐसे रूप में परिवर्तित करने के बारे में कैसे जाउंगा जो उपयोगकर्ता द्वारा चुने गए तीन आयामों के आधार पर गतिशील रूप से समान अभिव्यक्ति बना सकता है और इसलिए मुझे प्रत्येक संयोजन के लिए इनमें से प्रत्येक अभिव्यक्ति को बनाने की आवश्यकता नहीं है !! ?
धन्यवाद दोस्तों।
एक और तरीका 5 ग्रूपर वर्ग (प्रत्येक समूह के लिए एक समूह) को एक सामान्य इंटरफ़ेस IGroupEntities {List GetItems (IEnumerable
इस उत्तर के लिए धन्यवाद! मैंने कुछ ऐसा करने की कोशिश की थी लेकिन एक लापता लिंक होना चाहिए क्योंकि मुझे पूरा होने के लिए यह पुनरावृत्ति कभी नहीं मिला। मैंने आपके नमूने को स्टार्टर के रूप में उपयोग किया है और एक समाधान को कोड किया है जो मैं जो करने की कोशिश कर रहा था उसके लिए पूरी तरह से काम करता है। आपका बहुत बहुत धन्यवाद!!! – Penfold
+100 अगर मैं कर सकता था! बहुत बढ़िया जवाब! –