我有一个数据表,返回如下结果:
我想要做的是根据列进行分组:cfg和相应的计数。
所需的输出应该是:
我尝试使用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查询进行分组。
答案 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()
);