簡體   English   中英

我將如何使用 C# 中多個列表的值填充多維數組

[英]How would I populate a multi-dimensional array using values from multiple lists in C#

到目前為止,這是我的代碼:

 public static void FillArray(int[,,,] array)
 {

      List<string> BusCompany = new List<string>();


       BusCompany.Add("Sample Company 1");
       BusCompany.Add("Sample Company 2");
        BusCompany.Add("Sample Company 3");
      BusCompany.Add("Sample Company 4");
      BusCompany.Add("Sample Company 5");

      List<string> Route = new List<string>();
      BusCompany.Add("Sample Route 1");
      BusCompany.Add("Sample Route 2");

      List<string> Bus = new List<string>();
      BusCompany.Add("Sample Bus 1");
      BusCompany.Add("Sample Bus 2");

      List<string> Seat = new List<string>();
      BusCompany.Add("Seat 1");
      BusCompany.Add("Seat 2");
      BusCompany.Add("Seat 3");
      BusCompany.Add("Seat 4");
      BusCompany.Add("Seat 5");
      BusCompany.Add("Seat 6");
      BusCompany.Add("Seat 7");
    BusCompany.Add("Seat 8");
    BusCompany.Add("Seat 9");
    BusCompany.Add("Seat 10");

    List<string> Available = new List<string>();
    BusCompany.Add("Yes");

    string[,,,,] reservationTable;

    for (int BC = 0; BC < BusCompany.Count; BC++)
    {
        string BusCompanyValue = BusCompany[BC];
        for (int BR = 0; BR < Route.Count; BR++)
        {
            string BusRouteValue = Route[BR];
            for (int BB = 0; BB < Bus.Count; BB++)
            {
                string BusValue = Bus[BB];
                for (int BS = 0; BS < Seat.Count; BS++)
                {
                    string SeatValue = Seat[BS];
                    reservationTable[BC, BR, BB, BS,];
                }
            }
        }
    }
}

我想要它做的是從每個列表中獲取值,並以一種方式填充數組,使每個列表都成為前一個列表的屬性。 對不起不知道怎么解釋。 例如,一件完整的事情是

 ["Sample Company 1", "Sample Route 1", "Sample Bus 1", "Seat 1", "Yes"]

而另一個會是

 ["Sample Company 1", "Sample Route 1", "Sample Bus 1", "Seat 2", "Yes"]

依此類推,直到添加了所有不同的變體。 最后的“是”總是相同的值。

我的主要嘗試只是上面顯示的代碼,到目前為止我還沒有得到任何結果。

我認為你需要的是像這樣的東西

class Company{
   string Name;
   List<Route> Routes;
   List<Bus> Buses;

}

class Route{
    string Name;
}

class Bus{
    List<Seat> Seats;
}

class Seat{
    int Number;
    bool Booked;
}

這是您要的,但我認為這完全不是您想要的

我更改了變量的名稱以符合正常的 c# 命名標准。 (即 BusCompany 將是 class 而不是變量)

public static void FillArray() {
    List<string> company = new List<string>();
    company.Add("Sample Company 1");
    company.Add("Sample Company 2");
    company.Add("Sample Company 3");
    company.Add("Sample Company 4");
    company.Add("Sample Company 5");

    List<string> route = new List<string>();
    route.Add("Sample Route 1");
    route.Add("Sample Route 2");

    List<string> bus = new List<string>();
    bus.Add("Sample Bus 1");
    bus.Add("Sample Bus 2");

    List<string> seat = new List<string>();
    seat.Add("Seat 1");
    seat.Add("Seat 2");
    seat.Add("Seat 3");
    seat.Add("Seat 4");
    seat.Add("Seat 5");
    seat.Add("Seat 6");
    seat.Add("Seat 7");
    seat.Add("Seat 8");
    seat.Add("Seat 9");
    seat.Add("Seat 10");

    List<string> available = new List<string>();
    available.Add("Yes");

    int totalRows = company.Count * bus.Count * seat.Count * available.Count * route.Count;

    string[,] table = new string[ totalRows,5];


    int row = 0;
    for (int bc = 0; bc < company.Count; bc++) {
        for (int br = 0; br < route.Count; br++) {
            for (int bb = 0; bb < bus.Count; bb++) {
                for (int bs = 0; bs < seat.Count; bs++) {
                    for (int av = 0; av < available.Count; av++) {
                        table[row, 0] = company[bc];
                        table[row, 1] = route[br];
                        table[row, 2] = bus[bb];
                        table[row, 3] = seat[bs];
                        table[row, 4] = available[av];
                        row++;

                    }
                }
             }
        }
    }
}

我認為您正在尋找的是linked list

從一個節點到另一個節點的旅行在時間和空間上都是高效的。 您可以使用node.Next訪問下一個節點,甚至重新分配它們以及它們的 next.next。 您可以使用node.Value訪問它們的值。 如果您不必通過索引訪問它們,這些會有所幫助。 如果從一個遍歷到另一個,這就是你的人。 (此外,座位實際上應該是巴士 class 的財產。)

考慮放棄所有這些 for 循環,因為這是對 go 的大量迭代。 我將從使用“指針”節點同時遍歷所有列表開始,這會顯着減少運行時間。

您可以將鏈表存儲在一個數組中,以便訪問每個鏈表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM