5 / 5 / 1
Регистрация: 01.05.2014
Сообщений: 33

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

27.02.2017, 21:40. Показов 4892. Ответов 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 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru