【发布时间】:2018-12-03 07:54:27
【问题描述】:
您好,我有一个如下列表
var data2 = dt.AsEnumerable().Select(x => new
{
SubTask = x.Field<string>("subtask"),
Name = x.Field<string>("FirstName"),
Date = x.Field<string>("Day") + ", " + x.Field<string>("Date"),
Hour = System.Text.Encoding.UTF8.GetString(x.Field<System.Byte[]>("EmpHours"))
});
我的列表如下所示
Name Date Hour Subtask
---- ------ ------- ----------
a 2018-11-01 1 task1
a 2018-11-01 2 task2
b 2018-11-01 'PTO' 'PTO'
c 2018-11-01 5 design
c 2018-11-01 3 coding
我想按日期和名称分组,并将结果显示在主列表内的内部列表中。
我想按日期和名称分组,然后对每个名称的小时列求和。 小时列是字符串类型'它可能包含字符串'PTO'或像'2'这样的数字。
我试过下面的查询
var data2 = dt.AsEnumerable().Select(x => new
{
SubTask = x.Field<string>("subtask"),
Name = x.Field<string>("FirstName"),
Date = x.Field<string>("Day") + ", " + x.Field<string>("Date"),
Hour = System.Text.Encoding.UTF8.GetString(x.Field<System.Byte[]>("EmpHours")),
EmpList= (from grp in dt.AsEnumerable()
.GroupBy(row => new {
Name = row.Field<string>("Name"),
Date = row.Field<string>("Date")
}).Select(g => new { Date = g.Key.Date, Name = g.Key.Name, Hour = g.Sum(i => i.Field<decimal>("Hour"));
})
I want output like below table
Name Date Hour Subtask
---- ------ ------- ----------
a 2018-11-01 3 task1.task2
b 2018-11-01 'PTO' 'PTO'
c 2018-11-01 8 design,coding
谁能帮我解决这个问题?
【问题讨论】:
-
您遇到的具体问题是什么?你现在得到什么?你有什么期待?
-
那么当
Hour包含“PTO”时,你想怎么总结呢?忽略它(即视为零)?您的第二个示例还引用了一个字段Name,但您的第一个示例没有它 - 它的FirstName -
@Jamiec ,如果是PTO,在小时栏中显示为'PTO',无需求和。
-
@sandeep.mishra 我认为你没有抓住重点 - string "PTO" 与
Sum的结果的数值完全不兼容 -
我已经修改了我的问题。请立即查看,如果您清楚,请告诉我