C# 如何使用Linq在ASP.NET中筛选数据表并创建新的数据表?
您好,我的asp.net应用程序有问题 我有一个DataTable,我想用linq to DataTable筛选这个表 我的数据表具有以下结构: 用户|许可证|部门|时间|电话号码|位置 我想要一个新的datatable,在department中没有重复的条目。例如: 这是基本数据表中的三行C# 如何使用Linq在ASP.NET中筛选数据表并创建新的数据表?,c#,asp.net,linq,listview,datatable,C#,Asp.net,Linq,Listview,Datatable,您好,我的asp.net应用程序有问题 我有一个DataTable,我想用linq to DataTable筛选这个表 我的数据表具有以下结构: 用户|许可证|部门|时间|电话号码|位置 我想要一个新的datatable,在department中没有重复的条目。例如: 这是基本数据表中的三行 userA | 1 | IT | 4min | 0123/123 | germany userB | 1 | Marketing | 3min | 0232/232 | germany u
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
这意味着必须计算使用许可证持有人
这是我的密码:
更新:
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();
var query=来自catia_user_表中的行。AsEnumerable()
按行将字段(“部门”)分组到grp中
orderby grp.Key
选择新的
{
部门=组键,
许可证=grp.Sum(r=>r.Field(“许可证”))
};
DataTable tb=query.CopyToDataTable();
我认为问题在于我的数据表中的每一行都来自于类型字符串,或者这不是很重要 就像@Krishnaj 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();
您需要在查询中按部门对其进行分组。CopyToDataTable()是正确的,因为它将基于筛选的值创建新的DataTable。如果我正确理解您的问题,请发表评论。System.Data.DataTable不包含“GroupBy”的定义,并且找不到带有“GroupBy”的ExtensionMethod,其参数来自Typ“System.Data.DataTable”accept。(使用direkctive或Assemblyreference)hi@Tarasov,尝试在
GroupBy
之前添加AsEnumerable
。