【发布时间】:2015-04-29 14:57:16
【问题描述】:
我有一个名为 data 的变量定义为:
Dictionary<string[], Dictionary<string, float>> data
如您所见,键是一个字符串数组,值是另一个内部字典。每个键都可以包含以下项目:
{"xxx", "ccc", "wpr", "qpr"}
{"xxx", "abd", "xyz", "qpr"}
{"yyy", "ddd", "kgo", "abc"}
如何使用 LINQ 获取此键的不同第一项?例如,在上面的示例中,我应该得到 xxx 和 yyy 作为结果。其中两个键具有 xxx,一个具有 yyy 作为它们的第一项。
此 Dictionary 的键中的字符串数组用作行标识符。此词典包含的数据是导出到 Excel 的数据。我继承了这个应用程序,所以我不能重新定义这个变量。因此,密钥用于在 Excel 中识别和进行汇总分组。这就是原开发者这样做的原因。
字符串键将始终具有相同的长度。
【问题讨论】:
-
A
String[]作为键,为什么?如果没有自定义IEqualityComparer(string[]),这是行不通的 -
数组是否总是相同的长度?如果是,我不会使用数组。
-
你能解释一下“查找数组组的第一个元素的不同之处”与字典有什么关系吗?我还没有看到这种联系,因此担心问题的质量。
-
旁注:如果你碰巧使用这样的字典,请确保有适当的自定义比较器,类似于stackoverflow.com/questions/14663168/…中的比较器
-
虽然您将我的答案标记为正确,但您应该阅读并理解其他答案。使用字符串数组作为键可能是一个非常糟糕的主意。默认情况下,它不使用数组的值作为键,而是使用引用,这对于不熟悉它的工作原理的人来说是反直觉的,而且很容易做出各种错误的假设。