【发布时间】:2019-08-09 07:40:13
【问题描述】:
我正在创建一个时间表应用程序,我想显示以下内容:
为每个员工分成一个格子:
Id、Name、TaskName、SunHours、MondayHours... 等等 FridayHours
Employee_Table
empid
name
Timesheet
id
empid
taskid
sat
sun
mon
tues
wed
thurs
fri
sat
Task
taskid
taskname
我正在努力从 linq 查询创建对象,因为我无法访问时间表特定数据,即 sun、mon、tue 值。这是我所做的:
var result = (from e in db.Employees
join t in db.TimeSheets on e.Id equals t.EmployeeId
group e by t.TaskId into g
orderby g.Key
select new
{
empid = g.Key,
name = g.Select(e => e.Name),
sat = g.Select(s => s.Saturday), // cannot access this info
sun = g.Select(s => s.Sunday),
mon = g.Select(s => s.Monday),
tue = g.Select(s => s.Tuesday),
wed = g.Select(s => s.Wednesday),
thurs = g.Select(s => s.Thursday),
fri = g.Select(s => s.Friday),
});
更新:
所以,我最终得到了这个 - 它似乎代表了我所追求的。
var res = (from e in db.Employees
join t in db.TimeSheets on e.Id equals t.EmployeeId
group t by new { t.EmployeeId } into g
select new
{
id = g.Key.EmployeeId,
data = g
});
【问题讨论】:
-
这类问题被问得比较频繁。寻找 LINQ + pivot。