Sum и Group By в Linq to Entities - PullRequest
       12

Sum и Group By в Linq to Entities

1 голос
/ 01 декабря 2010

Я пытаюсь получить сумму некоторых значений путем группировки, и я застрял. Это пример структуры моей таблицы:

alt text

То, что я хочу получить:

Имя пользователя, имя проекта, общее время работы пользователей проекта, сгруппированные по имени пользователя и имени проекта.

Хитрость в том, что мне нужно отобразить нулевое или нулевое значение, если пользователь находится в проекте, и у него еще нет рабочего времени.

Пример результата должен быть таким:

Username  Project  Total Time
User1     Project1 15
User1     Project2 --
User2     Project1 10

Как мне это сделать?

1 Ответ

1 голос
/ 01 декабря 2010

Этот страшный выбор будет работать, как только вы добавите ссылки (навигационные свойства)

db.Users.SelectMany(
    x=> x.Projects
           .Select(i=>
                  new
                  {
                     User = x.Name,
                     Project = i.Name,
                     WorkTime = (int?)i.UserWorkTimes.Sum(t=>t.WorkTime)
                   })
    ); 

Мои предположения

  1. WorkTime имеет тип int.

  2. Nav.property из проектов в ProjectUserWorkTimes называется UserWorkTimes

  3. Nav.property от пользователей к проектам называется Проекты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...