C# 如何在Linq进行汇总?
如果以前有人问过,我会道歉,但我不确定我问的问题是否正确。 我的问题是: 我有以下数据:C# 如何在Linq进行汇总?,c#,linq,C#,Linq,如果以前有人问过,我会道歉,但我不确定我问的问题是否正确。 我的问题是: 我有以下数据: AA01 JAN 100 AA01 JAN 200 AA01 FEB 200 AA02 JAN 50 AA03 FEB 500 AA03 MAR 250 AA03 MAR 75 我想把它变成一个结果,看起来像: Result{ string Key, int Jan, int Feb, int Mar, ... } IEnumerable<Result> results
AA01 JAN 100
AA01 JAN 200
AA01 FEB 200
AA02 JAN 50
AA03 FEB 500
AA03 MAR 250
AA03 MAR 75
我想把它变成一个结果,看起来像:
Result{
string Key,
int Jan,
int Feb,
int Mar,
...
}
IEnumerable<Result> results = .....
KEY JAN FEB MAR
AA01 300 200 0
AA02 50 0 0
AA03 0 500 325
结果{
字符串键,
1月1日,
今年二月,,
今年三月,
...
}
IEnumerable结果=。。。。。
关键一月二月三月
AA01 300 200 0
AA02 50 0 0
AA03 0 500 325
如果这有帮助的话,月份列是固定的,但是我无法解决如何获得linq查询来生成这些结果?
我可以在标准循环中反复迭代数据并添加到结果中,但这听起来是错误的做法
感谢您的帮助:)我不确定如何直接在Linq中执行此操作,但一种方法是执行以下操作:
var-keys=myData.Select(d=>d.Key).distinct();
)词典
-这将保存您的密钥作为第一个词典的密钥,月份作为第二个词典的密钥以下是我知道的最简单的方法:
var query =
from r in records
group r by r.Key into grs
let ms = grs.ToLookup(gr => gr.Month, gr => gr.Value)
select new
{
grs.Key,
JAN = ms["JAN"].Sum(),
FEB = ms["FEB"].Sum(),
MAR = ms["MAR"].Sum(),
// ...
DEC = ms["DEC"].Sum(),
};
从计算角度来看,另一种更灵活的方法是不完全按照您想要的格式执行:
var months = Enumerable
.Range(0, 12)
.Select(m =>
String
.Format("{0:MMM}", new DateTime(2011, m + 1, 1))
.ToUpper());
var query =
from r in records
group r by r.Key into grs
let ms = grs.ToLookup(gr => gr.Month, gr => gr.Value)
select new
{
grs.Key,
Months =
from m in months
select ms[m].Sum(),
};
这里提供了非常有趣的解决方案 它描述了如何通过几个属性执行groupbby。即:
var result = customers.GroupByMany(c => c.Country, c => c.City);
查一下你的消息来源?DataTable?Source是一个完整的SQL数据库模型。与另一个版本相比,它的总和集要大得多。你说的“更大的总和集”是什么意思?链接已断开。