我将如何使用 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"]
依此类推,直到添加了所有不同的变体。最后的“是”总是相同的值。
我的主要尝试只是我上面显示的代码,到目前为止我没有得到任何结果。
这是你要的,但我认为这完全不是你想要的
我更改了变量的名称以符合正常的 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++;
}
}
}
}
}
}
我想你需要的是这样的东西
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;
}
我认为您要找的是 linked list。
从一个节点到另一个节点的旅行在时间上和 space 上都很高效。您可以使用 node.Next
访问下一个节点,甚至重新分配它们,以及它们的 next.next。您可以使用 node.Value
访问它们的值。如果您不必通过索引访问它们,这些会有所帮助。如果从一个遍历到另一个,这就是你的人。 (此外,座位实际上应该是 属性 的巴士 class。)
考虑放弃所有这些 for 循环,因为要经历很多迭代。我将从使用“指针”节点同时遍历所有列表开始,这会显着减少运行时间。
您可以将链表存储在数组中以便访问每个链表。
到目前为止,这是我的代码:
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"]
依此类推,直到添加了所有不同的变体。最后的“是”总是相同的值。
我的主要尝试只是我上面显示的代码,到目前为止我没有得到任何结果。
这是你要的,但我认为这完全不是你想要的
我更改了变量的名称以符合正常的 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++;
}
}
}
}
}
}
我想你需要的是这样的东西
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;
}
我认为您要找的是 linked list。
从一个节点到另一个节点的旅行在时间上和 space 上都很高效。您可以使用 node.Next
访问下一个节点,甚至重新分配它们,以及它们的 next.next。您可以使用 node.Value
访问它们的值。如果您不必通过索引访问它们,这些会有所帮助。如果从一个遍历到另一个,这就是你的人。 (此外,座位实际上应该是 属性 的巴士 class。)
考虑放弃所有这些 for 循环,因为要经历很多迭代。我将从使用“指针”节点同时遍历所有列表开始,这会显着减少运行时间。
您可以将链表存储在数组中以便访问每个链表。