Вывод данных из DataTable отсортированное по столбцу - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем! есть DataTable с данными, примерно такая табличка
15 5 8 6 9 78
14 6 58 4 8 6 
20 2 3 56 4 5
...
21 2 3 6 5 89
всю голову поломал уже, никак не могу вывести её в текстовый документ отсортированной по 2-му столбцу надо вот так примерно
20 2 3 56 4 5
21 2 3 6 5 89
15 5 8 6 9 78
...
14 6 58 4 8 6
пробовал ставить счетчик при выводе, но никак не могу допереть как вывести все строки по порядку... может как нибуть можно данные отсортировать в самой DataTable(рыл в эту сторону, гугл непомог) подкинте идею, спасибо заранее
решил задачу цыклом в цыкле, со сбросом первого цыкла, выполняется долго, но работает
int i=0;
int flag = 0;
for(i = 0; i <Table.Rows.Count; i++)
{
    if (flag == Convert.ToInt32(Table.Rows[ii][1]))
    {
        writer.Write();
    }
    if (ii == Table.Rows.Count - 1 && flag < 100)
    {
        flag++;
        ii = 0;
    }
}
вышло как так, есть у кого идеи, сделать это проще и быстрее?

Решение задачи: «Вывод данных из DataTable отсортированное по столбцу»

textual
Листинг программы
case 0:
                            writer.Write(string.Format("//-----------------------------------------------------------------------------------{0}// Guard/NPC{1}//-----------------------------------------------------------------------------------{2}{3}{4}", Environment.NewLine, Environment.NewLine, Environment.NewLine, 0, Environment.NewLine));
                            DataRow[] rows = TableGuardNPC.Select("", "Map");
                            int n = -1;
                            foreach (DataRow row in rows)           //из каждой строки таблицы
                            {
                                string mapName = string.Empty; 
                                getMobNameByID(row.ItemArray[0].ToString());
                                int map = (int)row.ItemArray[1];    // получаем id нужного нам коментария
                                if (n < map && n != map)
                                {
                                    int count = 0;
                                    foreach (Object obj in myAL)
                                    {
                                        
                                        if (myAL[count].ToString().StartsWith(map.ToString()) == true)
                                        {
                                            mapName = myAL[count].ToString().Substring(myAL[count].ToString().IndexOf(" ", 0) + 1);
                                            break;
                                        }
                                        else
                                            count++;
                                    }
                                    n = (int)row.ItemArray[1];  // увеличиваем значение id для следующего коментария
                                    writer.WriteLine("// " + mapName);  // выводим коментарий
                                }
                                string s = string.Join("\t", row.ItemArray); //формируем строку для вывода в файл
                                //s += "\t//" + nameMob;
                                writer.WriteLine(s); //и выводим строку в файл
                            }
                            writer.Write("end" + Environment.NewLine);
                            break;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы