Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串与foreach循环c中的列表元素进行比较#_C#_List_Foreach - Fatal编程技术网

C# 将字符串与foreach循环c中的列表元素进行比较#

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);

我反序列化了一个xml文件,以便执行一些处理并将结果写入另一个xml文件

反序列化:

        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);     
        }
    }