Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以合并C#键集合_C#_Dictionary_Tuples - Fatal编程技术网

是否可以合并C#键集合

是否可以合并C#键集合,c#,dictionary,tuples,C#,Dictionary,Tuples,不得不使用一些绝对可怕的代码(不是我的),很遗憾,我没有时间删除和替换这些代码 它创建了一个元组(我知道,不要问)。KeyCollection中的值属于SortedDictionary内部使用的字典,该字典通过管道向下传输到前端,在前端协调这两个值以创建基于日期的网格 它是这样创建的: Dictionary<string, Dictionary<DateTime, MyObject> dict = MyObjects.Select(i => i.Name) .Di

不得不使用一些绝对可怕的代码(不是我的),很遗憾,我没有时间删除和替换这些代码

它创建了一个
元组
(我知道,不要问)。KeyCollection中的值属于SortedDictionary内部使用的
字典,该字典通过管道向下传输到前端,在前端协调这两个值以创建基于日期的网格

它是这样创建的:

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);
字典i.Name)
.Distinct()
.ToDictionary(u=>u,u=>MyObjects.Where(i=>i.MyObject.Name==u
&&i.体积>i.计数最小体积)
.ToDictionary(d=>d.CreatedDate,d=>d));
SortedDictionary da=新的SortedDictionary(dict);
da.OrderBy(x=>x.Key);
收集日期;
dates=da.Values.First().Keys;
返回元组。创建(da,日期);
然而,人们发现这里面有一个bug(毫不奇怪)。在某些情况下,da.Values.First().Keys的日期时间范围与其他值集合不同,但正如您所看到的,构建元组的代码忽略了这一点,只使用第一个日期范围,挤压了其他日期范围

解决这个问题的最简单方法是以某种方式建立一个包含各种词典的动态键集合。但从我对对象的理解来看,这是不可能的,因为KeyCollection中的项是动态的,并且“属于”它们的原始字典


这是正确的吗?假设是这样的话,有没有其他“快速”的方法来摆脱这种可怕的混乱局面呢?

据我所知。。dates字段包含来自第一个元组的DateTime。。哪个可能与元组的其余部分不同步?你想要所有的日期时间点?差不多就是这样。我已经想出了一个解决办法——我们使用WPF前端,我可以将LINQ更改为“获取所有内容”,然后使用转换器去除空值。但我对更干净或更有效的方法感兴趣。