LINQ и группировка из простого отношения SQL DB - PullRequest
0 голосов
/ 29 октября 2009

У меня есть две таблицы со следующим макетом и отношениями:

Tasks:

TaskID    StartTime    EndTime    TaskTypeID    ProductionID
------------------------------------------------------------
1         12:30        14:30      1             1
2         14:30        15:30      2             1
3         11:10        13:40      2             2
4         10:25        15:05      1             2


TaskTypes:

TaskTypeID    Name
---------------------------------------------
1             Hardware Development
2             Software Development

Отношение:

Первичный ключ в TaskTypes.TaskTypeID и внешний ключ в Tasks.TaskTypeID.

То же самое с ProductionID (я пропустил макет таблицы): Первичный ключ в Productions.ProductionID и внешний ключ в Tasks.ProductionID.

То, что я хотел бы сделать, - это получить сгруппированный список, который отображает все задачи для каждого типа задач для определенного производства. Я думаю, это довольно просто, но я просто не могу заставить его работать с LINQ.

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

Я использую автоматически сгенерированные классы LINQ to SQL в C #.

Я пробовал это:

var = from TaskType in db.TaskTypes
      join Task in db.Tasks on TaskType.TaskTypeID equals Tasks.TaskTypeID
      where Task.ProductionID == p.ProductionID
      group TaskType by TaskType.TaskTypeID;

Ответы [ 2 ]

1 голос
/ 29 октября 2009

Мне кажется, что вы хотите сгруппироваться и затем присоединиться:

from task in db.Tasks
where task.ProductionID = p.ProductionID
group task by task.TaskTypeID into grouped
select new { TaskTypeID = grouped.Key,
             TotalTime = grouped.Sum(x => x.EndTime - x.StartTime) } into total
join task in db.Tasks on sum.TaskTypeID equals total.TaskTypeID
select new { TaskType = task.TaskType, TotalTime = total.TotalTime };

Я думаю, что, по крайней мере, в корне верно - но это может быть сложно с точки зрения EndTime - StartTime части.

0 голосов
/ 30 октября 2009



var result=db.Tasks.GroupBy(p=p.TaksTypeID, (tn, tt)=>
new {
 Key=tn.Name, TakesTime=>tt.Sum(p=>(p.EndTime-p.StartTime))
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...