C# 将字符串与foreach循环c中的列表元素进行比较#
我反序列化了一个xml文件,以便执行一些处理并将结果写入另一个xml文件 反序列化:C# 将字符串与foreach循环c中的列表元素进行比较#,c#,list,foreach,C#,List,Foreach,我反序列化了一个xml文件,以便执行一些处理并将结果写入另一个xml文件 反序列化: XmlSerializer deserializer = new XmlSerializer(typeof(Network)); TextReader reader = new StreamReader(@"path\XmlFile.xml"); object obj = deserializer.Deserialize(reader);
XmlSerializer deserializer = new XmlSerializer(typeof(Network));
TextReader reader = new StreamReader(@"path\XmlFile.xml");
object obj = deserializer.Deserialize(reader);
Network XmlData = (Network)obj;
reader.Close();
我在一个列表中得到了xml的“ROUTES”元素
现在我想浏览这个列表,将命令行(OriginSignal)上给出的字符串与列表中每个“ROUTE”元素的子元素“entersignal”的值进行比较
我试过这个:
string OriginSignal = null;
Console.WriteLine("");
OriginSignal = Console.ReadLine();
foreach (var route in XmlData.ROUTES)
{
if (OriginSignal.Equals(XmlData.ROUTES[].ENTRANCESIGNAL))
{
Console.WriteLine(XmlData.ROUTES[].ID);
}
}
Console.ReadLine();
我不知道在ROUTES[]中放置什么作为索引
我尝试了XmlData.ROUTES[route]
,但遇到了一个错误参数1:无法从“XmlData.ROUTES”转换为“int”
我是c#编程的初学者,因此我想得到一些帮助来实现这个您在这里使用的是
foreach
循环foreach
不使用索引,而是在每次迭代期间返回集合中的元素。在这种情况下,route
变量在每次迭代期间在集合中包含一个元素。您需要将元素与原始信号进行比较
foreach (var route in XmlData.ROUTES)
{
if(OriginalSignal.Equals(route.ENTRANCESIGNAL))
{
Console.WriteLine(route.ID);
}
}
按照下面的步骤了解有关foreach循环的更多信息。您在这里使用的是
foreach
循环foreach
不使用索引,而是在每次迭代期间返回集合中的元素。在这种情况下,route
变量在每次迭代期间在集合中包含一个元素。您需要将元素与原始信号进行比较
foreach (var route in XmlData.ROUTES)
{
if(OriginalSignal.Equals(route.ENTRANCESIGNAL))
{
Console.WriteLine(route.ID);
}
}
下面了解有关foreach循环的更多信息。在使用foreach循环时,不需要为数组使用索引,foreach循环会为循环的每次迭代使用数组中的下一个元素实例化
路由
变量。您只需要使用变量:
foreach (var route in XmlData.ROUTES)
{
if (OriginSignal.Equals(route.ENTRANCESIGNAL));
{
Console.WriteLine(route.ID);
}
}
在使用foreach循环时,不需要为数组使用索引,foreach循环会为循环的每次迭代实例化
route
变量和数组中的下一个元素。您只需要使用变量:
foreach (var route in XmlData.ROUTES)
{
if (OriginSignal.Equals(route.ENTRANCESIGNAL));
{
Console.WriteLine(route.ID);
}
}
如果我正确理解了这个问题,这就行了。 你不必使用索引。foreach基本上遍历XmlData.ROUTES中的所有元素,而var路由始终是当前项
foreach (var route in XmlData.ROUTES)
{
if (String.Equals(OriginSignal, route.ENTRANCESIGNAL)
{
Console.WriteLine(route.ID);
}
}
如果我正确理解了这个问题,这就行了。 你不必使用索引。foreach基本上遍历XmlData.ROUTES中的所有元素,而var路由始终是当前项
foreach (var route in XmlData.ROUTES)
{
if (String.Equals(OriginSignal, route.ENTRANCESIGNAL)
{
Console.WriteLine(route.ID);
}
}