首页 > 解决方案 > 比较数组和 XElement 的所有元素

问题描述

我在将数组的所有元素与我通过“for”循环进行的 XElement 对象的所有元素进行比较时遇到问题。我需要检查第二个结构是否具有第一个结构中的元素,如果第一个结构中有一个元素,那不在第二个结构中,我需要添加它。它应该像这样工作:检查循环中的字符串是否包含一个特定的片段,表明它们是同一个对象,如果不是,则进入另一个循环/“if”或其他。

我使用 .Contains() 来查找字符串片段,这表明它们是相同的。第一个对象是一个数组[30],部分填充了字符串。第二个对象是一个“名称”XElement,我使用这样的“for”循环得到它:

XDocument doc1 = XDocument.Load(folderName1 + "\\" + TXTFiles[i]);
IEnumerable<XElement> objectList = doc1.Descendants("ObjectList");
IEnumerable<XElement> HmiTag = objectList.Elements("Hmi.Tag.Tag");
for (int f = 0; f < HmiTag.Count(); f++)
{
IEnumerable<XElement> Name = HmiTag.ElementAt(f).Descendants("Name");
if (!(Name.ElementAt(0).ToString().Contains("Zone" + nbr + "_Pallet_Transfer") && !(array[ ].Contains("Zone" + nbr + "_Pallet_Transfer")) // something like that
}

该数组包括:

Zone3_Pallet_Transfer,
Zone1_Pallet_Transfer,
Zone5_Pallet_Transfer,

“名称”包括:

DB10000_Zone2_Data_Pallet_Transfer{0},
DB10000_Zone2_Data_Pallet_Transfer{1},
DB10000_Zone2_Data_Pallet_Transfer{2},
DB10000_Zone2_Data_Pallet_Transfer{3},
DB10000_Zone2_Data_Pallet_Transfer{4},
DB10000_Zone2_Data_Pallet_Transfer{5},
DB10000_Zone2_Data_Pallet_Transfer{6},
DB10000_Zone2_Data_Pallet_Transfer{7},
DB10000_Zone2_Data_Pallet_Transfer{8},
DB10000_Zone2_Data_Pallet_Transfer{9},
DB10000_Zone2_Data_Pallet_Transfer{10},
DB10000_Zone2_Data_Pallet_Transfer{11},
DB10000_Zone2_Data_Pallet_Transfer{12},
DB10000_Zone2_Data_Zone3_Pallet_Transfer,
DB10000_Zone2_Data_Zone1_Pallet_Transfer,

并且还应该包括在数组中找到的 DB10000_Zone2_Data_Zone5_Pallet_Transfer。

标签: c#xml

解决方案


推荐阅读