mdz*_*iec 5 c# linq pivot-table
我有以下类结构:
class Employee()
{
public String Name { get; set; }
public List<WorkDay> WorkDays { get; set; }
}
class WorkDay()
{
public DateTime Date { get; set; }
public Int Hours { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
是否可以List<Employee>使用Linq 进行数据透视,所以我的DataGridView中有这样的结果:
| Name | Name |...| Name |
Date | Hours | Hours | | Hours |
Date | Hours | Hours | | Hours |
Date | Hours | Hours | | Hours |
Date | Hours | Hours | | Hours |
... | Hours | Hours | | Hours |
Run Code Online (Sandbox Code Playgroud)
它很棘手,因为它是两个嵌套列表,我只找到了单个列表的例子,非常简单. 是否可以使用LINQ旋转数据?
我到了这一步,但还没到那里:
var _result = Employees.SelectMany(x => x.WorkDays)
.GroupBy(x => x.Date)
.Select(y => new
{
DATE = y.Key,
NAME = y.Select(z => z.Employee.Name).ToArray()
})
.ToList();
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何建议.
我想你需要这个:-
var result = employees.SelectMany(x => x.WorkDays, (employeeObj, workDays) =>
new { employeeObj, workDays })
.GroupBy(x => x.workDays.Date)
.Select(x => new
{
Date = x.Key,
NameAndHours = x.Select(z =>
new {
Name = z.employeeObj.Name,
Hours = z.workDays.Hours
})
}).ToList();
Run Code Online (Sandbox Code Playgroud)
这是带有一些示例数据的工作小提琴。
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |