ツリービューに表示されるデータを動的に再構築しようとしています。これにより、ユーザーは次のディメンションから最大 3 つを選択してデータをグループ化できます。
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();
これにより、次のような構造体が得られます。
+ Company A
+ Site A
+ Division 1
+ Division 2
+ Site B
+ Division 1
+ Company B
+ Site C
+ Division 2
+ Company C
+ Site D
ただし、これは多数の組み合わせの 1 つしか提供しません。
これを、ユーザーが選択した 3 つのディメンションに基づいて動的に同等の式を作成できるものに変換するにはどうすればよいでしょうか?
みんなありがとう。