public QuestPanel(string Data, int index, LinkedQuestList qs) { InitializeComponent(); _index = index; _qs = qs; this.button1.Text = index.ToString(); }
//Метод заполняет двусвязный список Quests. private void FillQuest() { var sqlconn = sqlconnection.GetDBConnection(ConfigurationManager.ConnectionStrings["MySqlCon"].ConnectionString); var myResult = MySqlData.MySqlExecuteData.SqlReturnDataset($"Select * from ohi", sqlconn); LinkedQuestList qs = new LinkedQuestList(); if (!myResult.HasError) { if (myResult.ResultData.Rows.Count > 0) { string data = ""; int iter; //Проходимся по всем записям которые пришли из базы. for (int i = 0; i < myResult.ResultData.Rows.Count - 1; i++) { iter = 0; data = ""; //Группируем записи с одинаковым ID в переменную data добавляя разделить ';' for (int j = 0; (int)myResult.ResultData.Rows[j + i][0] == (int)myResult.ResultData.Rows[i][0]; j++) { data += myResult.ResultData.Rows[j + i][2].ToString() + ";"; iter++; try { //Тут супер костыль... У меня не получается сделать проверку на //существование следующего элемента в коллекции. Проверки на IsNullOrEmpty, //на null - не работают. //Поэтому ловлю ошибку выхода за пределы массива и выхожу из цикла string kostyl = myResult.ResultData.Rows[j + 1 + i][0].ToString(); } catch (System.IndexOutOfRangeException) { break; } } qs.Add(data); i += iter - 1; if (i >= myResult.ResultData.Rows.Count - 1) { break; } } } } else { MessageBox.Show("Отсутствует подключение к базе данных, повторите попытку позже"); Application.Exit(); } _qs = qs; }