powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ. Объединение нескольких LIST+GrouoBy+SUM
2 сообщений из 2, страница 1 из 1
LINQ. Объединение нескольких LIST+GrouoBy+SUM
    #39455607
_den89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите как реализовать на c#?
LINQ раньше не использовал, поэтому прошу прощения за возможно тривиальные вопросы.
Есть два списка
Код: c#
1.
2.
List<Res> L1;
List<Act> L2 ;


Структура обычная, как в БД
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
1 Список
Id | Name1
1  | Имя1
2    Имя2
3    Имя3

2 Таблица
Name2 | Hours | id1
р1 | 2 | 1
p2 | 1 | 1
p1 | 4 | 2
p4 | 5 | 2
итд


Нужно объединить два списка и вывести в список
Код: sql
1.
2.
3.
4.
Id | Name1 | TotalHours
1 | Имя1 | 2
2 | Имя2 | 9
итд



Пишу код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
.....
.....
var r = (from a in L1
                         join b in L2 on a.id equals b.id1
                         group b by a.id into g                         
                         select new
                         {
                             ObjId = g.Key,                             
                             Hours = g.Sum(x => x.Hours)
                         }
                         );


Т.е. списки объединяю по ключу, с этим как я понимаю проблем нет, а вот потом вопрос..
группирую по ИД, создаю вывод и здесь проблема,
1. Данные группируются, но сумма по часам (hours) считается не в разрезе ID а общая.. нужна в разрезе группировки
2. Как вывести Name в списке?
...
Рейтинг: 0 / 0
LINQ. Объединение нескольких LIST+GrouoBy+SUM
    #39456635
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На будущее - сразу публикуйте код, который можно запустить (то есть в данном случае сами классы и код инициализации), чтобы можно было запустить и увидеть, а не гадать умозрительно, что у вас там не получается. Вдобавок вы еще и неверные дали имена полей (Id вместо id) и неверный результат - TotalHours для Имя1 должен составлять 3, а не 2.
Программист обязан быть внимательным к мелочам.

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


_den892. Как вывести Name в списке?
Код: c#
1.
2.
3.
4.
5.
6.
7.
                         group b by new {a.id, a.Name1} into g                         
                         select new
                         {
                             ObjId = g.Key.id,                             
                             Name1 = g.Key.Name1,                             
                             Hours = g.Sum(x => x.Hours)
                         }
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ. Объединение нескольких LIST+GrouoBy+SUM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]