【问题标题】: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

标签: c# .net arrays xml .net-3.5


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
相关资源
最近更新 更多