我如何使用Linq过滤DataTable并在ASP.NET中创建新的dataTable?

时间:2014-02-20 12:45:28

标签: c# asp.net linq listview datatable

嗨,我的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字符串,还是不那么重要?

1 个答案:

答案 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();