[英]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.