创建数组的动态数组[关闭]
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
添加到组中。
然后您将在组中选择Category
和Items
。
它将为您返回List<Category, List<Items>>
这是分类结构的样子
[
"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以上是关于创建数组的动态数组[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何制作具有动态大小的数组?动态数组的一般用法(也可能是指针)? [关闭]