我有一个大的数据集,我试图按照一组字段对这个数据集进行分组。在这个数据集中,我有5个连续日期的行(余额)。我的目标是返回一个自定义对象列表,其中包含一个带有Key的IDictionary字段作为日期和平衡值。我试过类似的东西:LINQ将一个列表分组并返回一个具有嵌入字典的自定义对象的列表
int[] DT = new int[] {20160725,20160726,20160727,20160728,20160729};
var tranformedData =
posData
.GroupBy(p => new {p.Symbol, p.Account})
.Select(gp => new TPosModel {
Symbol = gp.Key.Symbol,
Account = gp.Key.Account,
Balances = new Dictionary<int, decimal>{
{
gp.Where(gpi => gpi.BusDate == DT[0]).Select(gpi => gpi.BusDate),
gp.Where(gpi => gpi.BusDate == DT[0]).Select(gpi => gpi.Balance)
},
{
gp.Where(gpi => gpi.BusDate == DT[1]).Select(gpi => gpi.BusDate),
gp.Where(gpi => gpi.BusDate == DT[1]).Select(gpi => gpi.Balance)
},
.
.
.
}
此代码导致重复键错误。我通过将字典转换为元组列表来实现这一目标,但这不是最终的结果。任何人都有关于如何完成这个请求的建议。
感谢
你可以显示输入类吗?还有'TPosModel'类? –
@YacoubMassad,输入从平面文件读取,格式为: 'List({Symbol =“ABC.D”,Account =“1234-0C”,BusDate = 20160725,Balance = 123.45},{Symbol = “ABC.D”,帐户=“1234-0C”,BusDate = 20160726,余额= 125.67},{Symbol =“BCD.E”,帐户=“2345-0D”,BusDate = 20160725,余额= -2300.5}, {Symbol =“BCD.E”,Account =“2345-0D”,BusDate = 20160726,Balance = -2350.5})' 此列表需要转换为: 'List({Symbol =“ABC.D” ,帐户=“1234-0C”,余额= {[20160725,123.45],[20160726,125.67]}},{Symbol =“BCD.E”,帐户=“2345-0D”,余额= {[20160725, - 2300.5] [20160726,-2350.5]}})' – skoppisetti