Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
5 / 5 / 1
Регистрация: 01.05.2014
Сообщений: 33

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

27.02.2017, 21:40. Показов 4859. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
есть DataTable с данными, примерно такая табличка
Code
1
2
3
4
5
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-му столбцу
надо вот так примерно
Code
1
2
3
4
5
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(рыл в эту сторону, гугл непомог)
подкинте идею, спасибо заранее

Добавлено через 56 минут
решил задачу цыклом в цыкле, со сбросом первого цыкла, выполняется долго, но работает

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
    }
}
вышло как так, есть у кого идеи, сделать это проще и быстрее?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2017, 21:40
Ответы с готовыми решениями:

Вывод данных из DataTable в базу данных SQL Server 2005
Доброго времени суток. Существует таблица DataTable dt = new DataTable(); Как передать данные из этой таблици в sql server 2005?

Вывод данных из datatable в datagridview
Здравствуйте. Проблема у меня в правильном составлении условия. Я не могу вывести данные в 2 столбца. for each(DataRow^ row1 in...

Вывод данных из DataTable в DataGridView
Здравствуйте. Объясните, в чём моя проблема? У меня есть таблица 1. И я хочу её преобразовать во 2ую. Есть код. for(int i=0;...

4
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
27.02.2017, 22:49
eJkeee,
Набросал вот:
C#
1
2
3
4
5
6
7
8
9
DataRow[] rows = Table.Select("", "SortedColumn"); //сортируем строки по возрастанию значений в столбце SortedColumn
using (StreamWriter writer = new StreamWriter(@"d:\file.txt")) //будем писать в этот файл
{
    foreach (DataRow row in rows) //из каждой строки таблицы
    {
        string s = string.Join(" ", row.ItemArray); //формируем строку для вывода в файл
        writer.WriteLine(s); //и выводим строку в файл
    }
}
SortedColumn - имя столбца. Желательно установить тип этого столбца числовым, например, int. Иначе будет сортировать не по возрастанию числа, а по алфавиту.
Добавление столбца:
C#
1
2
DataColumn col = new DataColumn("SortedColumn", typeof(int));
Table.Columns.Add(col);
Или форматирование существующего:
C#
1
2
Table.Columns[1].ColumnName = "SortedColumn";
Table.Columns[1].DataType = typeof(int);
1
5 / 5 / 1
Регистрация: 01.05.2014
Сообщений: 33
27.02.2017, 23:05  [ТС]
Дацент,
спасибо, интересно, я вот надумал другой способ, у меня datatable выводится в gridview, так я сейчас там сортирую и пытаюсь вывести, но столкнулся с проблемой сортировки, щас попробую твой вариант
C#
1
DataColumn("SortedColumn", typeof(int));
то что надо!

Добавлено через 5 минут
а как вставить в текст дополнительную строку если
C#
1
SortedColumn.value[1] == 0
мне надо вставить пару строк, потом продолжать вывоводить по порядку, опять же до условия
C#
1
SortedColumn.value[1] == 1
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
27.02.2017, 23:16
eJkeee,
как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DataRow[] rows = Table.Select("", "SortedColumn");
using (StreamWriter writer = new StreamWriter(@"e:\f2.txt"))
{
    int n = -1;
    foreach (DataRow row in rows)
    {
        string s = string.Join(" ", row.ItemArray);
        if ((int)row["SortedColumn"] > n)
        {
            n = (int)row["SortedColumn"];
            writer.WriteLine(string.Format("----------------{0}--------------", n));
        }
        writer.WriteLine(s);
    }
}
1
5 / 5 / 1
Регистрация: 01.05.2014
Сообщений: 33
28.02.2017, 12:38  [ТС]
да, уже разобрался, теперь вот под структуру подгоняю, файл формируется из 5-ти таблиц, в каждой таблице от 2 до 10 разделителей, строк более 7К выходит, думаю разделители через Switch - Case организовать, там ещё надо счетчик поставить, что бы разделители не повторялись, вообщем сижу думаю, за подсказку большое спасибо!

Добавлено через 13 часов 11 минут
Решил полность!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2017, 12:38
Помогаю со студенческими работами здесь

Отсортировать данные в DataTable по алфавиту по определенному столбцу
Каким образом можно это осуществить?

Привязать два radiobutton'a к одному столбцу DataTable
Приветствую. Есть таблица DataTable (назовем ее DT) с целочисленным столбцом &quot;PType&quot;. Значения в этом столбце могут быть только 1...

Вывод Печать итоговой суммы по столбцу
Добрый день! В 1С 7.7 в документе перемещения выводится на печать таблица, нужно подсчитать сумму строк или сумму по столбцу Кол. Не...

Привязка Textbox к столбцу таблицы, вывод столбца
Всем доброго времени суток. Имеется база данных в которой есть 2 таблицы каждые из таблиц имеют 5 одинаковых столбцов :...

Вывод нескольких DataTable
Здравствуйте. Незадолго до написания сего поста занимался написанием приложения ASP.NET WebForms, суть которого заключалась в парсинге...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru