创建数组的动态数组
本文关键字:数组 动态 创建 | 更新日期: 2023-09-27 18:24:04
在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,我需要在单个数组中使用相同的类别项目
项目和类别计数是完全动态的。如何动态地做到这一点?
您可以使用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"
}
}
]
}
]