我試圖動態地重新結構中的一些數據在樹視圖這將允許用戶通過選擇多達三個以下尺寸對數據進行分組,以顯示:創建的GroupBy語句動態
Organisation
Company
Site
Division
Department
因此,例如,如果用戶選擇他們想由公司分組然後Site然後分區...下面的代碼將執行所需的分組。
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();
這將使這樣的結構法:
+ Company A
+ Site A
+ Division 1
+ Division 2
+ Site B
+ Division 1
+ Company B
+ Site C
+ Division 2
+ Company C
+ Site D
然而,這只是爲我提供了在大量的組合的。
我怎麼會去轉換到這個東西,可以動態地創建基於用戶已經選擇了,所以我沒有創建這些表達式每個組合中的一個三維等值表達! ?
謝謝你們。
另一種方法是使用通用接口IGroupEntities {List GetItems(IEnumerable
感謝您的回答!我曾嘗試過類似的東西,但一定有一個缺失的環節,因爲我從來沒有完成這個迭代。我已經將您的樣本用作初學者,並編寫了一個完全適合我所嘗試的解決方案。非常感謝你!!! – Penfold
+100如果我可以!很好的答案! –