Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.02.2018
Сообщений: 13

Суммировать данные в DataTable

13.03.2019, 20:16. Показов 2853. Ответов 0

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть таблица получаемая таким образом:
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
DataTable table1 = new DataTable("table");
//DataColumn doz1 = new DataColumn("№ дозатора", Type.GetType("System.String"));
DataColumn kod1 = new DataColumn("Код материала", Type.GetType("System.String"));
DataColumn smena11 = new DataColumn("Смена 1", typeof(double));
DataColumn smena21 = new DataColumn("Смена 2", typeof(double));
DataColumn smena31 = new DataColumn("Смена 3", typeof(double));
DataColumn dozsutki1 = new DataColumn("Сутки", typeof(double));
//table.Columns.Add(doz1);
table1.Columns.Add(kod1);
table1.Columns.Add(smena11);
table1.Columns.Add(smena21);
table1.Columns.Add(smena31);
table1.Columns.Add(dozsutki1);
 
DataRow row1 = table1.NewRow();
 
for (int i = 0; i < 30; i++)
    {
         if (sutkiMaterial[i, 0] > 0)
             {
                   table1.Rows.Add(new object[] { sutkiMaterial[i, 0].ToString(), smena1Material[i, 1],
                   smena2Material[i , 1], smena3Material[i , 1],
                   sutkiMaterial[i , 1]});
             }
     }
GridView5.DataSource = table1;
                GridView5.DataBind();
Результат:
Код материала Смена 1 Смена 2 Смена 3 Сутки
6030 0,000 7,300 0,000 7,300
6199 38,728 11,928 0,000 50,656
5109 83,370 16,170 0,000 99,540
5131 10,260 3,312 0,000 13,572
6030 139,175 62,850 0,000 202,025
Необходимо, что бы код материала не дублировался, а выводился одной строкой с суммой значений в столбцах Смена 1, 2 и т.д.
Пробовал вариант отсюда:
C#
1
2
3
4
5
6
7
8
9
10
11
DataTable pivotedTable = table1.Clone(); // same columns, empty
var pivotColumns = pivotedTable.Columns.Cast<DataColumn>().Skip(1).ToList();
var codeGroups = table.AsEnumerable()
       .GroupBy(r => r.Field<string>("Код материала"));
foreach (var code in codeGroups)
       {
            DataRow rowCl = pivotedTable.Rows.Add(); // already added to table now
            rowCl.SetField("Код материала", code.Key);
            foreach (DataColumn c in pivotColumns)
            rowCl.SetField(c, code.Sum(r => r.Field<double>(c.ColumnName)));
       }
Но в последней строке возникает исключение System.InvalidCastException: "Заданное приведение является недопустимым."

Добавлено через 1 час 3 минуты
Этот вариант работает хорошо, но только для одного столбца, в данном случае Смена 1
C#
1
2
3
4
5
6
7
8
9
10
11
12
var result = table1.AsEnumerable()
      .GroupBy(r => r.Field<string>("Код материала"))
      .Select(g =>
      {
          var row = table1.NewRow();
          rowN.ItemArray = new object[]
          {
               g.Key,
               g.Sum(r => r.Field<double>("Смена 1"))
           };
           return row;
       }).CopyToDataTable();
К сожалению LINQ мне пока-что не известен.

Добавлено через 4 часа 42 минуты
Возможно, причина найдена:
в моём коде, который, я весь не публиковал присутствуют две таблицы table и тестовая, которая здесь представлена - table1,
первая имеет тип данных string, к сожалению я упустил из виду строку
C#
1
var codeGroups = table.AsEnumerable() //где, естественно должно быть table1.AsEnumerable()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2019, 20:16
Ответы с готовыми решениями:

Обновить данные с DataTable в БД
Доброго времени суток! :) Есть БД ( просто для теста ), в ней таблица &quot;table1&quot; с 2 колонками: ID, Data. и заполненная некоторыми...

Данные из DataTable в ToolStripComboBox
Помогите заполнить ToolStripComboBox Запросом я выбираю столбец из БД. Вот по нему и должен происходить выбор в ToolStripComboBox. БД...

Скопировать данные из datagridview в datatable
Я создал колонки в гриде, вручную добавил строки туда же. dataGridView1.Rows.Add(...) Теперь хочу привязать данные из datagridview...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2019, 20:16
Помогаю со студенческими работами здесь

Не удается обновить данные в бд из DataTable, адаптер не обновляется
Добрый день. Заполняю datatablе значениями из базы. datatablе заполняю значениями из 2-х таблиц (использую объединенный запрос). ...

Как сохранить данные из DataTable в DBF файл
Подскажите пожалуйста, есть заполненный dataTable, в нём больше 40 полей и есть dbf файл, с такими же столбцами - но пустой. Его я вытащил...

Как полученные данные из linqEntities записать в datatable
Соответственно есть запрос linqEntities: var query = from col in linqEntities.TestTable ...

Отсортировать данные по одному из столбцов в DataGridView который привязан к DataTable
Мне необходимо отсортировать данные по одному из столбцов в DataGridView который привязан к DataTable. Сортирую DataTable. Проблема в том,...

SQLiteDataAdapter. Данные из DataTable (или DataSet) в sqlite через метод
Здравстуйте. Помогите решить задачу. Есть DataGridView (dgv_Type) в него загружаются данные из sqlite DataTable dt_type = new...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru