我在数据表中有以下内容:
58,10,251,3
58,10,251,1
58,10,251,1
58,10,251,2
58,10,261,1
60,11,666111,1
我想得到以下结果:
251,7
261,1
666111,1
到目前为止,我正在玩这个游戏,我觉得我几乎已经拥有它但不完全确定如何结束它....
var query = from row in dt.AsEnumerable().Where(h => h.Field<string>("COLUMN 0") == val)
group row by row.Field<string>("COLUMN 2")
into sales
orderby sales.Key
select new
{
Name = sales.Key,
CountOfClients = sales.Sum(v => sales.Count())
};
这给了我
251,16
261,1
666111,1
因此它适用于261和666111但不适用于251。
不知何故,8人加倍了。
答案 0 :(得分:0)
sales.Sum(v => sales.Count())
这是错误的。您正在总结销售额。这与sales.Count() * sales.Count()
相同。
您应该根据之前的查询撰写类似sales.Sum(v => v.Field<int>("COLUMN 4"))
或类似内容的内容。
那是:
var query = from row in dt.AsEnumerable().Where(h => h.Field<string>("COLUMN 0") == val)
group row by row.Field<string>("COLUMN 2")
into sales
orderby sales.Key
select new
{
Name = sales.Key,
CountOfClients = sales.Sum(v => v.Field<int>("COLUMN 4"))
};
如果您的列实际上是字符串,则需要编写:
int.Parse(v.Field<string>("COLUMN 4"))