Как объединить неизвестное количество массивов?

#c# #arrays #merge

Вопрос:

Я готовлю практический экзамен на получение водительских прав. Пользователи могут выбирать несколько категорий для получения вопросов. Я хочу взять билеты из этих массивов и поместить их все в один массив. Это мой код:

 public Ticket[] GetTickets(int numOfCat)  {  bool getTicks = true;  if (getTicks)  {  System.Console.WriteLine(DrivingLicenceStorage.Categories.Length);  for (int i = 0; i lt; numOfCat; i  )  {  System.Console.Write($"Enter category N{i   1}: ");  var Ids = Convert.ToInt32(Console.ReadLine());  if (Ids gt; DrivingLicenceStorage.Categories.Length)  {  System.Console.WriteLine("Invalid Input");  System.Console.WriteLine("Try Again");  i--;  }  else  {  Tickets = DrivingLicenceStorage.Categories.ElementAt(Ids).Tickets;  getTicks = false;  }  }   }     return Tickets;  }  

Проблема в том, что Tickets получает билеты из последней категории, в которую входит пользователь. Как объединить билеты всех выбранных категорий?

Комментарии:

1. Я думаю, также следует отметить, что настройка getTicks = false; не имеет никакого эффекта, так как она проверяется перед входом в цикл for и никогда не используется после первоначальной проверки.

Ответ №1:

Массивы не являются подходящим типом данных для списков с динамическим числом элементов. Вместо этого вы можете использовать a Listlt;Ticketgt; .

Пример кода:

 var ticketList = new Listlt;Ticketgt;(); ... // repeat as often as required  ​ticketList.AddRange(DrivingLicenceStorage.Categories.ElementAt(Ids).Tickets); ​  ... return ticketList.ToArray();  

Комментарии:

1. @niniasabadze если ответ вас устроит, пожалуйста, отметьте его как принятый (галочка слева от ответа)