嗨,我的asp.net应用程序有问题。
我有一个DataTable,我想用linq过滤这个表到datatable。
我的DataTable有这样的结构:
用户|许可证|部门|时间|电话号码|位置
我想要一个新的数据表,在部门中没有共享条目。例如:
这是基本dataTable中的三行
userA | 1 | IT | 4min | 0123/123 | germany
userB | 1 | Marketing | 3min | 0232/232 | germany
userC | 1 | IT | 1min | 0233/233 | germany
这是我想要的:
部门|许可证
It | 2
Marketing | 1
这意味着必须计算使用licenes。
这是我的代码:
更新:
var query = from row in catia_user_table.AsEnumerable()
group row by row.Field<string>("Department") into grp
orderby grp.Key
select new
{
Department = grp.Key,
Licenses = grp.Sum(r => r.Field<int>("Licenses"))
};
DataTable tb = query.CopyToDataTable();
认为问题是我的DataTable中的每一行都来自Typ字符串,还是不那么重要?
答案 0 :(得分:1)
像@Krishnraj一样,Rana说,你只需要按部门分组,然后使用Sum
运算符来计算每个部门的总许可证数。见下文:
var query = catia_user_table.AsEnumerable().GroupBy(n => n.Department)
.Select(g => new
{
Department = g.Key,
Licenses = g.Sum(n => n.Licensec)
}).ToList();