【发布时间】:2018-04-25 14:57:01
【问题描述】:
我通过在 LINQ 中的 GroupBy 投影上调用 ToDictionary 创建了三个字典。
var dictionaryOne = _repositoryOne.GetData()
.GroupBy(d => new { d.Property1, d.Property2, d.LocalCcyId})
.ToDictionary(d =>
new
{
d.Key.Property1,
d.Key.Property2,
d.Key.LocalCcyId
},
v => v.Sum(l => ConvertToUsd(effectiveDate, l.LocalCcyId, l.Amount)));
var dictionaryTwo = _repositoryTwo.GetData()
.GroupBy(d => new { d.Property1, d.Property2, d.LocalCcyId})
.ToDictionary(d =>
new
{
d.Key.Property1,
d.Key.Property2,
d.Key.LocalCcyId
},
v => v.Sum(l => ConvertToUsd(effectiveDate, l.LocalCcyId, l.Balance)));
var dictionaryThree = _repositoryThree.GetData()
.GroupBy(d => new { d.Property1, d.Property2, d.LocalCcyId})
.ToDictionary(d =>
new
{
d.Key.Property1,
d.Key.Property2,
d.Key.LocalCcyId
},
v => v.Sum(l => ConvertToUsd(effectiveDate, l.LocalCcyId, l.Total)));
我想将这些合并到字典中,然后 i) 总结以美元为单位的值 & ii) 从 Key 中删除按 LocalCcyId 列分组
三个字典中的每一个中都会出现相同键的实例,我需要汇总所有此类情况的总和。如何在 LINQ 中实现这一点?
【问题讨论】:
-
在调用
ToDictionary之前,为什么不直接Concat数据源? -
我可以试试。每个来源的数据结构都非常不同,我必须对每个来源进行额外的 Select 以使它们与 Concat 一起使用。
-
@nvoigt - 我试过但无法让它工作。如果我在 GroupBy 之后执行 Select,那么我无法调用 ToDictionary