gpt4 book ai didi

c# - 有没有比使用字符串数组更好的方法来组织这些数据?

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:14 27 4
gpt4 key购买 nike

我有两个循环从两个 XML 源中提取数据:

循环1:

foreach (XmlNode nodes in node.ChildNodes)
{
if (nodes.Name == "DEFAULT")
defaults[count] = nodes.InnerText;
if (nodes.Name == "TYPE"
types[count] = nodes.InnerText;
if (nodes.Name == "COL_NAM"
names[count] = nodes.InnerText;

}
count++;

循环2:

foreach (XmlNode nodes in root.ChildNodes)
{
vals[i] = nodes.InnerText;
cols[i] = nodes.Name;
i++;
}

不知何故,我想将这些数据组织成一个最终对象。该对象需要有 4 个部分:名称、类型、值和默认值。本质上,我想将 Loop1 中的所有内容组合在一起,然后将 Loop2 中的所有内容组合在一起,然后将这两个对象添加到一个对象中,该对象匹配 Loop1 中的名称和 Loop2 中的列。理想情况下,Loop2 中的节点数量可以少于 Loop1 中的节点数量。但是,如果那不可能,我可以解决它。

为了更好地了解最终对象:

object everything = {{names}, {types}, {values}, {defaults}};

名称将来自两个循环,并将成为对象的“键”。类型和默认值将来自 Loop1,值将来自 Loop2。串联将使用 Name/Col 进行匹配。

PS:我尝试使用 2D String 数组来执行此操作,但在尝试将匹配 cols 和 names 字段的两个组合起来时遇到了麻烦。

最佳答案

您可以使用 Dictionary类并使用 Name 作为对象的键。

例如:

public class MyObj{
public string Name{get;set;};
public string Type{get;set;};
public string Value{get;set;};
public string Default{get;set;};
}

并修改您的循环以使用它:

var allObjs = new Dictionary<string, MyObj>();   


foreach (XmlNode nodes in node.ChildNodes)
{
var obj = new MyObj();
if (nodes.Name == "DEFAULT")
obj.Default = nodes.InnerText;
...
allObjs.Add(obj.Name, obj);
}

然后在第二个循环中使用键检索现有对象以更新值。像这样:

foreach (XmlNode nodes in root.ChildNodes)
{
var myObj = allObs[nodes.Name];
myObj.Value = nodes.InnerText;
}

关于c# - 有没有比使用字符串数组更好的方法来组织这些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14989567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com