Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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#_.net_Arrays_Xml_.net 3.5 - Fatal编程技术网

C# 创建数组的动态数组

C# 创建数组的动态数组,c#,.net,arrays,xml,.net-3.5,C#,.net,Arrays,Xml,.net 3.5,在C#中,我试图创建一个数组数组,或者使用XML数据将其称为锯齿数组。但我完全不知道如何开始 XML示例 <?xml version="1.0" encoding="utf-8"?> <MAIN> <Items> <Name>name1</Name> <Data>data1</Data> <Category>category1</Category> <

在C#中,我试图创建一个数组数组,或者使用XML数据将其称为锯齿数组。但我完全不知道如何开始

XML示例

<?xml version="1.0" encoding="utf-8"?>
<MAIN>
  <Items>
    <Name>name1</Name>
    <Data>data1</Data>
    <Category>category1</Category>
  </Items>
  <Items>
    <Name>name2</Name>
    <Data>data2</Data>
    <Category>category2</Category>
  </Items>
  <Items>
    <Name>name3</Name>
    <Data>data3</Data>
    <Category>category2</Category>//same category as above
  </Items>
  ...
  ...
  <Items>
    <Name>name20</Name>
    <Data>data20</Data>
    <Category>category16</Category>
  </Items>
</MAIN>

名称1
数据1
类别1
姓名2
数据2
类别2
名字3
数据3
类别2//与上述类别相同
...
...
姓名20
数据20
类别16
现在我需要创建一个包含category1,category2。。。对于类别节点上的类别,需要为每个类别创建一个单独的数组来存储项目名称和数据,以便检索它们以供使用

从上面的示例xml中,我需要在单个数组中包含相同的类别项

项目和类别计数是完全动态的。
如何动态执行此操作?

您可以使用linq执行此操作

var categorized = xe.Descendants("Items")
    .GroupBy(x => x.Element("Category").Value)
    .Select(x => new
    {
        Category = x.Key,
        Items = x.ToList()
    }).ToList();
您将使用相同的
类别
元素向组中添加
项目
。 然后您将在组中选择
类别
项目
。 它将为您返回
列表

这就是分类结构的样子

[
  {
    "Category": "category1",
    "Items": [
      {
        "Items": {
          "Name": "name1",
          "Data": "data1",
          "Category": "category1"
        }
      }
    ]
  },
  {
    "Category": "category2",
    "Items": [
      {
        "Items": {
          "Name": "name2",
          "Data": "data2",
          "Category": "category2"
        }
      },
      {
        "Items": {
          "Name": "name3",
          "Data": "data3",
          "Category": "category2",
          "#text": "//same category as above\n  "
        }
      }
    ]
  },
  {
    "Category": "category16",
    "Items": [
      {
        "Items": {
          "Name": "name20",
          "Data": "data20",
          "Category": "category16"
        }
      }
    ]
  }
]

请看一看C#中的序列化,这将为您指明正确的方向。我对编程非常陌生,希望在这方面得到帮助。您至少可以自己尝试一下,然后根据遇到的问题编辑您的问题。互联网上充满了如何做你所要求的事情的例子!如果不是自己尝试(失败)的话,你如何才能提高你的技能?从忘记数组开始吧。您需要一个列表,可能还需要一个
类项目
。如何创建动态数组名称需要一些示例代码,以便它可以帮助我什么是动态数组名称?类别将是动态的,它可以是任何名称或任何计数您的意思是
类别
作为元素名称或
类别
元素值?这是我说的值category1,类别2