Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
7 / 7 / 2
Регистрация: 29.12.2009
Сообщений: 132

LINQ to DataTable Строка с максимумом

18.02.2016, 17:39. Показов 2035. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
Допустим есть таблица с 3-мя полями no, hour и res. Найти максимум поля res по каждому значению поля hour можно так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var query =
                from row in dtStat.AsEnumerable()
                group row by row.Field<Int32>("hour") into g
                select new
                {
                    h = g.Key,
                    max =  g.Max(rr => rr.Field<double>("res"))
                };
 
foreach (var r in query)
            {
                ...
            }
А вот как определить значение поля no, соотвествующее этому максимуму?
Заранее благодарю за оперативный ответ
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2016, 17:39
Ответы с готовыми решениями:

Linq и DataTable
Здравствуйте, подскажите пожалуйста, как составить запрос для вывода данных из DataTable с помощью Linq? Цель запроса вывести те данные...

Запрос Linq to DataTable
Здравствуйте, помогите разобраться с одним вопросом: Есть запрос: IEnumerable&lt;DataRow&gt; query = from spell in...

Linq.Dynamic и DataTable
Кто-нибудь работал с динамической библиотекой LINQ ? Как, имея 2 DataTable сделать INNER JOIN ? Пытаюсь сделать таким образом:...

5
22 / 25 / 11
Регистрация: 10.10.2013
Сообщений: 165
19.02.2016, 01:34
abb269, делать выборку с where hour==r.hour и where res=r.max в цикле.
0
7 / 7 / 2
Регистрация: 29.12.2009
Сообщений: 132
19.02.2016, 09:45  [ТС]
понятно, что через цикл все можно найти. А нельзя ли все-таки при группировке (в структуру g) в селекте внедрить поле no?
Пробовал что-то типа
C#
1
2
3
4
5
6
select new
   {
   h = g.Key,
   max =  g.Max(rr => rr.Field<double>("res")),
   n = g.Field<int>("no") // не компилируется!
   };
Не выходит
0
22 / 25 / 11
Регистрация: 10.10.2013
Сообщений: 165
19.02.2016, 18:34
Лучший ответ Сообщение было отмечено abb269 как решение

Решение

abb269,
C#
1
2
3
4
5
6
7
8
9
var query =
                from row in dtStat.AsEnumerable()
                group row by row.Field<Int32>("hour") into g
                select new
                {
                    h = g.Key,
                    max = g.Max(rr => rr.Field<double>("res")),
                    no = g.Where(rr => rr.Field<double>("res") == g.Max(() => rr.Field<double>("res"))).First().Field<int>("no");
                }
1
7 / 7 / 2
Регистрация: 29.12.2009
Сообщений: 132
20.02.2016, 09:32  [ТС]
inst_mefi, спасибо.
Но по сути, как я понимаю, для такой задачи проще и быстрее просто сортировать и брать первую строку, не заморачиваясь с двойным поиском (сначала найти максимум, потом найти строку с максимумом).
0
22 / 25 / 11
Регистрация: 10.10.2013
Сообщений: 165
20.02.2016, 11:26
abb269, проще и быстрее делать выборку из выборки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2016, 11:26
Помогаю со студенческими работами здесь

Группировка строк DataTable с использованием LINQ
Всем привет! Linq не занимался толком. Возникла такая задача. Есть DataTable table2. У неё 18 колонок из которых по 16 надо сделать...

Обновление DataTable с использованием LINQ To DataSet
Помогите новичку в области LINQ. Приведите пример применения LINQ To DataSet для обновления данных в таблице DataTable. Например,...

Получить строку из datatable по запросу linq
есть datatable в первом столбце идут даты, как получить Datarow с максимальной датой? var row = Dt.AsEnumerable.Max(row =&gt;...

Linq to mdb: как достать DataTable из БД?
есть mdb BD.. и нужно как то достать из нее все таблицы чтобы можно было к ним писать ЛИКЬЮ запросы... но как это сделать без СКЛ?

Как получить данные из DataTable использую linq
Пробую следующим образом: var subdivisionName = from row in SubdivisionsData.AsEnumerable() ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru