我有一个包含示例数据的数据表,如下所示。
UserName IsBillable Hours
-----------------------------
user1 Yes 10
user2 Yes 15
user3 No 20
user1 Yes 25
user1 No 15
user2 Yes 10
我想分组IsBillable
并与Hours
column.
UserName Billable NonBillable
-----------------------------
user1 35 15
user2 25 0
user3 0 20
我怎样才能做到这一点使用LINQ
?
你可以尝试这样的事情:
var grouped = dt.AsEnumerable()
.GroupBy(row=> row.Field<string>("UserName"))
.Select(gr=> new
{
UserName = gr.Key,
Billable = gr.Where(row=>row.Field<string>("IsBillable")=="Yes")
.Sum(row=>row.Field<int>("Hours"),
NonBillable = gr.Where(row=>row.Field<string>("IsBillable")=="No")
.Sum(row=>row.Field<int>("Hours"),
});
我假设dt
是您的数据表,您只需要一系列具有三个属性的项目UserName
, Billable
, NonBillable
。如果您需要将结果作为数据表,则需要一些额外的工作。如果是这样的话,请告诉我。
我们上面所做的事情很简单。最初,我们根据用户名对结果进行分组,然后过滤每组的项目,以计算相应的总和。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)