Hierarchische Datentabelle in Json konvertieren

Ich habe eine hierarchische Datentabelle wie folgt, die das Menü und seine Untermenüs generiert. Hauptmenü hat Eltern-ID als 0. Untermenü hat Eltern-IDs, die auf Eltern-ID verweisen.

ResourceId   DisplayName   ParentId     Url
-----------------------------------------------
1           Home           0            Some Url
2           Student        0            Some Url
3           Staff          0            Some Url
4           Library        0            Some Url
6           StudentAtt     1            Some Url
7           TimeTable      1            Some Url
8           Staff Att      2            Some Url
9           Book Issue     3            Some Url
10          Book Return    3            Some Url
11          Fee Payment    4            Some Url
12          Book fine      10           Some Url

Notwendig, um es in Json zu konvertieren. Unten ist der Code, den ich ausprobiert habe. Ich versuche zu überprüfen, ob ParentId von SubMenu gleich ResourceId des Hauptmenüs ist. Das Untermenü wird jedoch nicht angezeigt. (Variablentabelle ist DataTable)

var rows = table.Rows.Cast<DataRow>().ToList();
            var result = rows.Where(x => x["ParentId"].ToString() == "0").GroupBy(r => new { x = r["ResourceId"] }).Select(
                g => new
                {
                    //MenuLevel = g.Key.x,
                    MenuDetails = g.GroupBy(r => new {a = r["DisplayName"], b = r["Url"]}).Select(
                        detail => new
                        {
                            DisplayName = detail.Key.a,
                            Url = detail.Key.b,
                            SubMenu =
                                detail.Where(y => g.Key.x.ToString()==y["ParentId"].ToString()).
                                    GroupBy(r => new {f = r["DisplayName"]}).Select(
                                    subMenu=>new
                                    {
                                        SubMenuDisplayName=subMenu.Key.f
                                    }
                                    )
                        }
                        )
                });

as Ergebnis ist wie folg

[{"MenuDetails":[{"DisplayName":"Home","Url":null,"SubMenu":[]}]},{"MenuDetails":[{"DisplayName":"Student","Url":null,"SubMenu":[]}]},{"MenuDetails":[{"DisplayName":"Staff","Url":null,"SubMenu":[]}]},{"MenuDetails":[{"DisplayName":"Library","Url":null,"SubMenu":[]}]}]

Aber erwartetes Ergebnis ist:

[{"MenuDetails":[{"DisplayName":"Home","Url":null,"SubMenu":[{"SubMenuDisplayName":"StudentAtt"},{"SubMenuDisplayName":"TimeTable"}]}]},{"MenuDetails":[{"DisplayName":"Student","Url":null,"SubMenu":[{"SubMenuDisplayName":"Staff Att"}]}]},{"MenuDetails":[{"DisplayName":"Staff","Url":null,"SubMenu":[{"SubMenuDisplayName":"Book Issue"},{"SubMenuDisplayName":"Book Return"}]}]},{"MenuDetails":[{"DisplayName":"Library","Url":null,"SubMenu":[{"SubMenuDisplayName":"Fee Payment "}]}]}]

Ich muss auch das Unter-Untermenü anzeigen (dessen Eltern-ID auf die Ressourcen-ID des Untermenüs verweist). Bitte helfen Sie

Antworten auf die Frage(2)

Ihre Antwort auf die Frage