c# - 比较数组和 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。
解决方案
推荐阅读
- python - 如何分析 python 字典中的列表值,添加显示不同键的额外字典值和列表值的共同点?
- reactjs - 基于AntD构建自定义表单控件时,输入addonBefore有些麻烦
- java - 如何访问 JMenu 上的项目并使用 Action Listener?
- javascript - 在数组 VueJS 中显示对象
- python - 如何存储来自一个 Python 脚本的变量的计算值,以便在另一个 Python 脚本中一次又一次地重用
- php - 日期:获取某个日期的下周一或周二
- node.js - opentok angular 6 错误 TS2314:通用类型“承诺”
' 需要 1 个类型参数 - javascript - 在本机 iOS 上似乎没有调用 this.setState
- c# - 如何设置背景无颜色 ASP.NET C#
- android - 使用 SpongyCastle 在某些操作系统版本上生成非常慢的密钥