有没有一种方法可以从循环内部获取值

时间:2020-06-08 08:06:28

标签: c# loops csv while-loop

我需要能够返回代码fleetVehicles.insertVehicle(vehicles[i])的最后一行,但是我不能这样做,因为它嵌套在所有其他循环中。...我知道代码不是最好的但是,它可以满足我的需要。有没有一种方法可以获取该价值,或者我需要重新安排所有循环?我真的很困惑,任何答案都会有所帮助。代码如下。

谢谢你

void setUpVehicles(out Fleets fleetVehicles)
{
    using (StreamReader stream = new StreamReader(@"..\..\..\Data\data.csv"))
    {
        while (!stream.EndOfStream)
        {
            string lines = stream.ReadLine();
            string[] column = lines.Split(new char[] { ',' });

            string firstcolumn = (column[0]);
            string secondcolumn = (column[1]);

            var rentals_cost = File.ReadLines(@"..\..\..\Data\data2.csv");
            foreach (var line in rentals_cost)
            {
                 if (linee.Split(',')[0].Equals(firstcolumn))
                 {
                     string[] vehicles = File.ReadAllLines(@"..\..\..\Data\data1.csv").Where(line => !line.StartsWith(rego)).ToArray();
                     fleetVehicles = new Fleets();

                     for (int i = 0; i < vehicles.Length; i++)
                     {
                         fleetVehicles.insertVehicle(vehicles[i]);
                     }
                 }
             }
         }
     }
}

2 个答案:

答案 0 :(得分:0)

没有什么可以阻止您首先创建Fleets对象,然后将其填充到循环中。这样,您可以使用以下函数返回Fleets对象:

Fleets setUpVehicles()
        {
            var fleetVehicles = new Fleets();
            {
                using (StreamReader stream = new StreamReader(@"..\..\..\Data\data.csv"))
                {
                    while (!stream.EndOfStream)
                    {
                        {
                            string lines = stream.ReadLine();

                            string[] column = lines.Split(new char[] { ',' });

                            string firstcolumn = (column[0]);
                            string secondcolumn = (column[1]);

                            var rentals_cost = File.ReadLines(@"..\..\..\Data\data2.csv");
                            foreach (var line in rentals_cost)
                            {
                                // you had a little typo here
                                if (line.Split(',')[0].Equals(firstcolumn))
                                {
                                    string[] vehicles = File.ReadAllLines(@"..\..\..\Data\data1.csv").Where(line => !line.StartsWith(rego)).ToArray();


                                    for (int i = 0; i < vehicles.Length; i++)
                                    {
                                        fleetVehicles.insertVehicle(vehicles[i]);

                                    }


                                }
                            }
                        }
                    }


                }
                return fleetVehhicles;
            }

答案 1 :(得分:0)

我想你要退回上一辆车

string setUpVehicles(out Fleets fleetVehicles) {
 string returnValue = null;

 using(StreamReader stream = new StreamReader(@ "..\..\..\Data\data.csv")) {
  while (!stream.EndOfStream) {
   {
    string lines = stream.ReadLine();

    string[] column = lines.Split(new char[] {
     ','
    });

    string firstcolumn = (column[0]);
    string secondcolumn = (column[1]);

    var rentals_cost = File.ReadLines(@ "..\..\..\Data\data2.csv");
    foreach(var line in rentals_cost) {
     if (linee.Split(',')[0].Equals(firstcolumn)) {
      string[] vehicles = File.ReadAllLines(@ "..\..\..\Data\data1.csv").Where(line => !line.StartsWith(rego)).ToArray();
      fleetVehicles = new Fleets();

      for (int i = 0; i < vehicles.Length; i++) {
       fleetVehicles.insertVehicle(vehicles[i]);
       returnValue = vehicles[i];

      }


     }
    }
   }
  }


 }

 return returnValue;

}