Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 给定一个简单的字典,构建一个嵌套的无序列表_C#_Asp.net_Razor - Fatal编程技术网

C# 给定一个简单的字典,构建一个嵌套的无序列表

C# 给定一个简单的字典,构建一个嵌套的无序列表,c#,asp.net,razor,C#,Asp.net,Razor,给定一个字典,构建一个嵌套的html无序列表 我还发现了其他一些例子,其中有parentid等,但我并没有对数据的格式感到困惑。此外,如果某些“菜单”项有子项,它们的处理方式也会有所不同。我最初的想法是获得第一级计划表,即Performers,Home,然后通过一个包含所有元素的函数发送该列表 var dict2 = new Dictionary<string, string>() { "Schedule|Friday","/Date/Classification?date=2020

给定一个字典,构建一个嵌套的html无序列表

我还发现了其他一些例子,其中有parentid等,但我并没有对数据的格式感到困惑。此外,如果某些“菜单”项有子项,它们的处理方式也会有所不同。我最初的想法是获得第一级计划表,即Performers,Home,然后通过一个包含所有元素的函数发送该列表

var dict2 = new Dictionary<string, string>() {
"Schedule|Friday","/Date/Classification?date=2020-03-06"
"Schedule|Saturday","/Date/Classification?date=2020-03-07"
"Schedule|Sunday","/Date/Classification?date=2020-03-08"
"Schedule|Regional","/Schedule/Classification?classification=Regional"
"Schedule|Culinary","/Schedule/Classification?classification=Culinary"
"Schedule|Storytellers","/Schedule/Classification?classification=Storytellers"
"Schedule|National","/Schedule/Classification?classification=National"
"Schedule|Urchin Street","/Schedule/Classification?classification=Urchin%20Street"
"Schedule|Horses and Sheep","/Schedule/Classification?classification=Horses%20and%20Sheep"
"Schedule|Dance","/Schedule/Classification?classification=Dance"
"Performers|Regional|SomeMenuText0","/Performers/Index/b905cf6f-6c63-4b48-9988-10eba9799c23"
"Performers|Regional|SomeMenuText1","/Performers/Index/f9de249a-5026-4d1f-803c-1cf1574fdb9c"
"Performers|Culinary|SomeMenuText2","/Performers/Index/9724e1a5-48b2-46ee-a3cd-8878eb4c4f45"
"Performers|Culinary|SomeMenuText3","/Performers/Index/6efbe6ae-fd01-4895-9a25-74722053f7e1"
"Performers|Regional|SomeMenuText4","/Performers/Index/bbcff599-7ec7-4cbe-911b-27c8bf2cc6fc"
"Performers|Storytellers|SomeMenuText5","/Performers/Index/4ada12f6-06e7-4112-9f7a-73d028777c29"
"Performers|National|SomeMenuText6","/Performers/Index/9650749d-de27-4c6f-8804-7c3b70eae78a"
"Performers|Urchin Street|SomeMenuText7","/Performers/Index/a5197e3e-60cc-4076-b1be-4d14d6c4455e"
"Performers|Urchin Street|SomeMenuText8","/Performers/Index/aa9f52dd-0fe2-4450-bc0e-5e756e2ff236"
"Performers|Culinary|SomeMenuText9","/Performers/Index/6e572975-5f8c-494a-9906-546d54c96671"
"Home","/Home/ViewContent/051ec1ce-386b-4070-957a-7515331b7bff"
}
var dict2=新字典(){
“附表|星期五”,“/日期/分类?日期=2020-03-06”
“附表|周六”、“/日期/分类?日期=2020-03-07”
“附表|星期日”,“/日期/分类?日期=2020-03-08”
“附表|区域性”,“/附表/分类?分类=区域性”
“附表|烹饪”,“/附表/分类?分类=烹饪”
“计划|讲故事者”,“/Schedule/Classification?Classification=讲故事者”
“附表|国家”,“/附表/分类?分类=国家”
“附表|海胆街”,“/Schedule/Classification?Classification=Urchin%20Street”
“附表|马和羊”,“/Schedule/Classification?Classification=马%20和%20Sheep”
“时间表|舞蹈”,“时间表/分类?分类=舞蹈”
“表演者|地区| SomeMenuText0”,“/Performers/Index/b905cf6f-6c63-4b48-9988-10eba9799c23”
“表演者|地区|某些人除外1”,“/Performers/Index/f9de249a-5026-4d1f-803c-1cf1574fdb9c”
“表演者|烹饪| SomeMenuText2”,“/Performers/Index/9724e1a5-48b2-46ee-a3cd-8878eb4c4f45”
“表演者|烹饪| SomeMenuText3”,“/Performers/Index/6efbe6ae-fd01-4895-9a25-74722053f7e1”
“表演者|地区| SomeMenuText4”,“/Performers/Index/bbcff599-7ec7-4cbe-911b-27c8bf2cc6fc”
“表演者|故事讲述者| SomeMenuText5”,“/Performers/Index/4ada12f6-06e7-4112-9f7a-73d02877c29”
“表演者|国家| SomeMenutex6”,“/Performers/Index/9650749d-de27-4c6f-8804-7c3b70eae78a”
“表演者| Urchin Street | SomeMenuText7”,“/Performers/Index/a5197e3e-60cc-4076-b1be-4d14d6c4455e”
“表演者| Urchin Street | SomeMenutex8”,“/Performers/Index/aa9f52dd-0fe2-4450-bc0e-5e756e2ff236”
“表演者|烹饪|一些人的作品”,“/Performers/Index/6e572975-5f8c-494a-9906-546d54c96671”
“主页”、“/Home/ViewContent/051ec1ce-386b-4070-957a-7515331b7bff”
}
我想生成一个无序列表。 像这样


  • 使用LinQ使其变得优雅,下面的代码块将实现拆分、分组和排序。它将把字典转换为匿名类型的分组集合

    每个实例将有三个属性

  • LevelCount:字典条目键中的信息级别数
  • Levels:a | b | c作为字符串[]{a,b,c}的拆分版本
  • Url:字典条目的值,它是目标Url

  • 这个代码块是用来打印集合的

    groupedList.ForEach((x) =>
    {
        x.ToList().ForEach((y) =>
        {
            Console.WriteLine
            (
                y.LevelCount > 2 ? (y.Levels[1] + " / " + y.Levels[0] + " [Text=" + y.Levels[2] + "] => " + y.Url) :
                y.LevelCount > 1 ? (y.Levels[0] + " of " + y.Levels[1] + " => " + y.Url) :
                y.Levels[0] + " => " + y.Url
            );
        });
    });
    
    打印出以下内容:

    Schedule of Culinary => /Schedule/Classification?classification=Culinary
    Schedule of Dance => /Schedule/Classification?classification=Dance
    Schedule of Friday => /Date/Classification?date=2020-03-06
    Schedule of Horses and Sheep => /Schedule/Classification?classification=Horses%20and%20Sheep
    Schedule of National => /Schedule/Classification?classification=National
    Schedule of Regional => /Schedule/Classification?classification=Regional
    Schedule of Saturday => /Date/Classification?date=2020-03-07
    Schedule of Storytellers => /Schedule/Classification?classification=Storytellers
    Schedule of Sunday => /Date/Classification?date=2020-03-08
    Schedule of Urchin Street => /Schedule/Classification?classification=Urchin%20Street
    Culinary / Performers [Text=SomeMenuText2] => /Performers/Index/9724e1a5-48b2-46ee-a3cd-8878eb4c4f45
    Culinary / Performers [Text=SomeMenuText3] => /Performers/Index/6efbe6ae-fd01-4895-9a25-74722053f7e1
    Culinary / Performers [Text=SomeMenuText9] => /Performers/Index/6e572975-5f8c-494a-9906-546d54c96671
    National / Performers [Text=SomeMenuText6] => /Performers/Index/9650749d-de27-4c6f-8804-7c3b70eae78a
    Regional / Performers [Text=SomeMenuText0] => /Performers/Index/b905cf6f-6c63-4b48-9988-10eba9799c23
    Regional / Performers [Text=SomeMenuText1] => /Performers/Index/f9de249a-5026-4d1f-803c-1cf1574fdb9c
    Regional / Performers [Text=SomeMenuText4] => /Performers/Index/bbcff599-7ec7-4cbe-911b-27c8bf2cc6fc
    Storytellers / Performers [Text=SomeMenuText5] => /Performers/Index/4ada12f6-06e7-4112-9f7a-73d028777c29
    Urchin Street / Performers [Text=SomeMenuText7] => /Performers/Index/a5197e3e-60cc-4076-b1be-4d14d6c4455e
    Urchin Street / Performers [Text=SomeMenuText8] => /Performers/Index/aa9f52dd-0fe2-4450-bc0e-5e756e2ff236
    Home => /Home/ViewContent/051ec1ce-386b-4070-957a-7515331b7bff
    
    您可以更改打印输出逻辑以呈现HTML或任何您需要的内容


    希望这能有所帮助。

    不知何故,我认为递归可能会有所帮助,因为我们不知道有多少个级别(子级,然后是子级)。递归看起来像这样:查找“|”的索引,如果不是-1,则执行一些操作,然后再次调用方法本身,并更新新索引,以检查从该位置到字符串末尾的情况。
    groupedList.ForEach((x) =>
    {
        x.ToList().ForEach((y) =>
        {
            Console.WriteLine
            (
                y.LevelCount > 2 ? (y.Levels[1] + " / " + y.Levels[0] + " [Text=" + y.Levels[2] + "] => " + y.Url) :
                y.LevelCount > 1 ? (y.Levels[0] + " of " + y.Levels[1] + " => " + y.Url) :
                y.Levels[0] + " => " + y.Url
            );
        });
    });
    
    Schedule of Culinary => /Schedule/Classification?classification=Culinary
    Schedule of Dance => /Schedule/Classification?classification=Dance
    Schedule of Friday => /Date/Classification?date=2020-03-06
    Schedule of Horses and Sheep => /Schedule/Classification?classification=Horses%20and%20Sheep
    Schedule of National => /Schedule/Classification?classification=National
    Schedule of Regional => /Schedule/Classification?classification=Regional
    Schedule of Saturday => /Date/Classification?date=2020-03-07
    Schedule of Storytellers => /Schedule/Classification?classification=Storytellers
    Schedule of Sunday => /Date/Classification?date=2020-03-08
    Schedule of Urchin Street => /Schedule/Classification?classification=Urchin%20Street
    Culinary / Performers [Text=SomeMenuText2] => /Performers/Index/9724e1a5-48b2-46ee-a3cd-8878eb4c4f45
    Culinary / Performers [Text=SomeMenuText3] => /Performers/Index/6efbe6ae-fd01-4895-9a25-74722053f7e1
    Culinary / Performers [Text=SomeMenuText9] => /Performers/Index/6e572975-5f8c-494a-9906-546d54c96671
    National / Performers [Text=SomeMenuText6] => /Performers/Index/9650749d-de27-4c6f-8804-7c3b70eae78a
    Regional / Performers [Text=SomeMenuText0] => /Performers/Index/b905cf6f-6c63-4b48-9988-10eba9799c23
    Regional / Performers [Text=SomeMenuText1] => /Performers/Index/f9de249a-5026-4d1f-803c-1cf1574fdb9c
    Regional / Performers [Text=SomeMenuText4] => /Performers/Index/bbcff599-7ec7-4cbe-911b-27c8bf2cc6fc
    Storytellers / Performers [Text=SomeMenuText5] => /Performers/Index/4ada12f6-06e7-4112-9f7a-73d028777c29
    Urchin Street / Performers [Text=SomeMenuText7] => /Performers/Index/a5197e3e-60cc-4076-b1be-4d14d6c4455e
    Urchin Street / Performers [Text=SomeMenuText8] => /Performers/Index/aa9f52dd-0fe2-4450-bc0e-5e756e2ff236
    Home => /Home/ViewContent/051ec1ce-386b-4070-957a-7515331b7bff