【发布时间】:2020-04-01 20:19:25
【问题描述】:
我有一个按天列出的员工工作时间数据列表。我想透视日期和时间数据并创建一个新的对象列表,其中包含员工姓名,以及一系列以各自小时为值的日期。
我的列表看起来像
List<EmployeeHour> employeeHours = new List<EmployeeHour>
{
new EmployeeHour{Id = 1, EmployeeName = "Emp1", Day = 1, Hours = 6},
new EmployeeHour{Id = 1, EmployeeName = "Emp1", Day = 2, Hours = 8},
new EmployeeHour{Id = 2, EmployeeName = "Emp2", Day = 1, Hours = 6},
new EmployeeHour{Id = 2, EmployeeName = "Emp2", Day = 2, Hours = 8}
};
我想创建类似 Hours 的对象的新列表
new {
Id = 1,
EmplyeeName = Emp1,
Day1 = 6,
Day2 = 8
},
new {
Id = 2,
EmplyeeName = Emp2,
Day1 = 6,
Day2 = 8
}
我就是这样做的。有更好的解决方案吗?
dynamic d = new
{
Employee = group.FirstOrDefault().EmployeeName,
Day1 = group.FirstOrDefault(g => g.DayNumber == 1)?.HoursPerDay,
Day2 = group.FirstOrDefault(g => g.DayNumber == 2)?.HoursPerDay,
Day3 = group.FirstOrDefault(g => g.DayNumber == 3)?.HoursPerDay,
Day4 = group.FirstOrDefault(g => g.DayNumber == 4)?.HoursPerDay,
Day5 = group.FirstOrDefault(g => g.DayNumber == 5)?.HoursPerDay,
Day6 = group.FirstOrDefault(g => g.DayNumber == 6)?.HoursPerDay,
Day7 = group.FirstOrDefault(g => g.DayNumber == 7)?.HoursPerDay
};
list.Add(d);
【问题讨论】:
-
这里有很多类似的问题。没有标准的单线解决方案。
-
先生,我就是这样做的。动态 d = new { Employee = group.FirstOrDefault().EmployeeName, Day1 = group.FirstOrDefault(g => g.DayNumber == 1)?.HoursPerDay, Day2 = group.FirstOrDefault(g => g.DayNumber == 2 )?.HoursPerDay, };
-
您需要动态的日子吗?如果是这样,为什么不制定一份不同的员工列表,每个员工都有自己的日期和时间列表?
-
我正在使用 datatables.net 插件来创建表。这只是我知道如何通过将列与返回的对象映射来填充 datatables.net jquery 中 ajax 调用的数据的一种方式。所以我选择了这种方式。你可以指导我最好的方法。我选择了这个插件,因为它重组了表格以适应小型设备。
-
好的,所以您希望您的表格具有特定天数的“第 1 天”、“第 2 天”列?
标签: c# linq pivot-table