是否可以合并C#KeyCollections

时间:2014-04-29 13:38:05

标签: c# dictionary tuples

必须使用一些绝对可怕的代码(不是我的代码),遗憾的是我没有时间去剥离和替换代码。

它会创建Tuple<SortedDictionary<String, Dictionary<DateTime, MyObject>>, Dictionary<DateTime, MyObject>.KeyCollection>(我知道,不要问)。 KeyCollection中的值属于SortedDictionary中使用的Dictionary<DateTime, MyObject>,并且通过管道传输到前端,在这两个前端协调以创建基于日期的网格。

它的创建方式如下:

Dictionary<string, Dictionary<DateTime, MyObject> dict = MyObjects.Select(i => i.Name)
    .Distinct()
    .ToDictionary(u => u, u => MyObjects.Where(i => i.MyObject.Name == u
        && i.Volume > i.Count.MinimumVolume)
    .ToDictionary(d => d.CreatedDate, d => d));

SortedDictionary<string, Dictionary<DateTime, MyObject>> da = new SortedDictionary<string, Dictionary<DateTime, MyObject>>(dict);
da.OrderBy(x => x.Key);

Dictionary<DateTime, MyObject>.KeyCollection dates;
dates = da.Values.First().Keys;

return Tuple.Create(da, dates);

但是,有人发现这是一个错误(不足为奇)。在某些情况下,da.Values.First()。键的DateTime范围与其他值集合不同,但正如您所见,构建元组的代码忽略了这一点,并且只使用了第一个Date范围,挤压其他人。

解决此问题的最简单方法是以某种方式构建所涉及的各种词典的动态KeyCollection。但是从我对这个对象的理解来看,这是不可能的,因为KeyCollection中的项目是动态的,并且属于&#34;到原来的词典。

这是对的吗?并且假设它是,还有其他&#34;快速&#34;摆脱这种可怕的,可怕的混乱?

0 个答案:

没有答案