创建数组的动态数组[关闭]

Posted

技术标签:

【中文标题】创建数组的动态数组[关闭]【英文标题】:Create dynamic array of arrays [closed] 【发布时间】:2016-02-25 06:54:27 【问题描述】:

在 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>

现在我需要创建一个包含 category1、category2、... 的数组,直到类别节点上的类别,需要为每个类别创建一个单独的数组来存储项目名称和数据,以便我可以检索它们我的用途。

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

项目和类别计数是完全动态的。 如何动态地做到这一点?

【问题讨论】:

看看 C# 中的序列化,这应该会为您指明正确的方向 我对编程很陌生,希望得到帮助 您至少可以自己尝试一下,然后根据遇到的问题编辑您的问题。互联网上充满了如何做你所要求的例子!搜索google.com/search?q=xml+deserialization+c%23 如果不是靠自己尝试(和失败),你怎么能提高你的技能? 从忘记数组开始。你需要一个列表,可能还有一个class Item 【参考方案1】:

你可以用 linq 做到这一点

var categorized = xe.Descendants("Items")
    .GroupBy(x => x.Element("Category").Value)
    .Select(x => new
    
        Category = x.Key,
        Items = x.ToList()
    ).ToList();

您会将具有相同Category 元素的Items 添加到组中。 然后您将在组中选择CategoryItems。 它将为您返回List&lt;Category, List&lt;Items&gt;&gt;

这是分类结构的样子

[
  
    "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"
        
      
    ]
  
]

【讨论】:

如何创建动态数组名称需要一些示例代码,以便对我有所帮助 什么是动态数组名? 类别将是动态的,可以是任何名称或任何计数 您的意思是 Category 作为元素名称还是 Category 元素值? 这是我说的值 category1,category2

以上是关于创建数组的动态数组[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中初始化指向动态二维数组的指针 [关闭]

如何制作具有动态大小的数组?动态数组的一般用法(也可能是指针)? [关闭]

Qt中的2D游戏:初始化怪物并将动态分配的数组作为指针参数传递[关闭]

为啥 C++ 不支持堆栈上的动态数组? [关闭]

调整动态字符串数组的大小[关闭]

C ++在函数内部分配动态数组[关闭]