2 つの XML ソースからデータを取得する 2 つのループがあります。
ループ 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++;
}
どうにかして、このデータを 1 つの究極のオブジェクトに整理したいと考えています。オブジェクトには、名前、タイプ、値、デフォルトの 4 つの部分が必要です。基本的に、Loop1 のすべてをグループ化し、次に Loop2 のすべてをグループ化し、2 つのオブジェクトをまとめて、Loop1 の名前と Loop2 の列に一致する 1 つのオブジェクトを作成します。理想的には、ループ 2 のノードの数はループ 1 のノードの数よりも少なくすることができます。しかし、それが不可能な場合は、回避できます。
最終的なオブジェクトをよりよく理解するには:
object everything = {{names}, {types}, {values}, {defaults}};
名前は両方のループから取得され、オブジェクトの「キー」になります。タイプとデフォルトはループ 1 から取得され、値はループ 2 から取得されます。連結は Name/Col を使用して一致します。
PS: 2D String 配列を使用してこれを実行しようとしましたが、cols フィールドと name フィールドに一致する 2 つを結合しようとしたときに問題が発生しました。