如何合并数据表的重复行(基于列)&把它放在单独的数据表中?

时间:2018-03-27 09:34:49

标签: c# asp.net linq datatable

我有一个数据表,返回如下结果:

enter image description here

我想要做的是根据列进行分组:cfg和相应的计数。

所需的输出应该是:

enter image description here

我尝试使用LINQ语法来完成这项工作:

    DataTable objDataTable = DLService.GetData();

    var distinctTable = from row in objDataTable.AsEnumerable()
                        group row by row.Field<string>("cfg") into newProps
                        orderby newProps.Key
                        select new
                        {
                            PropName = newProps.Key,
                            CountOfProps = newProps.Count()
                        };

我能够使用cfg对cfg进行分组,但不能根据cfg获得计数(总和)。 由于公寓有4个条目,我得到的是:4公寓(其返回的条目数)。它应该返回:74公寓

任何人都可以提供解决方案来完成这项工作吗?语法或任何其他方法的任何改进?

请注意,我不想使用sql查询进行分组。

2 个答案:

答案 0 :(得分:1)

试试以下内容。 :

Tactic Notation "test" ident(db) :=
  auto with db.

答案 1 :(得分:1)

在您的情况下,分组依据返回IEnumerable<IGrouping<object, DataRow>>。您需要的是总结分组中的所有值:

 Dictionary<string, int> counts = dt.AsEnumerable()
            .GroupBy(x => x["cfg"])
            .OrderBy(x => x.Key)
            .ToDictionary(
                x => (string) x.Key,
                x => x.Select(row => (int) row["count"]).Sum()
            );