【问题标题】:How Can I get all the contents of this KVP如何获取此 KVP 的所有内容
【发布时间】:2017-08-10 21:36:58
【问题描述】:

我试图弄清楚传递给 TryAppendDetailSet 函数的所有内容。我只是想确保我能从中得到一切。有人可以通过这种方式验证我没有遗漏任何东西。

foreach(KeyValuePair<string[], string[]> kvp in orderedList)
            {
                //i++;
                //j++;
                for(int i =0; i<kvp.Key.Length; i++)
                {
                    for(int j=0;j<kvp.Value.Length;j++)
                    {
                    WriteLogEntry(LOG_ERRORS, LOG_FILE,"J= "+ j + "    Kvp Key: " + kvp.Key[i] +"        Kvp value: " + kvp.Value[j]);

                    }
                }

                if (!this.Batch.TryAppendDetailSet(documentID, kvp.Key, kvp.Value, false, out error))
                {
                    WriteLogEntry(LOG_ERRORS, LOG_FILE, "TryAppendDetailSet Error at DocID: " + documentID + ", Error: " + error.Message + ", kvp.Key.Length = " + kvp.Key.Length.ToString());
                }
            }

如果我可以只在日志中打印出即时传递的键和值,那就太好了。

像这样,除了这不起作用,我相信它会在我的日志中输出类似 System.String 的东西。

foreach(KeyValuePair<string[], string[]> kvp in orderedList)
            {
            WriteLogEntry(LOG_ERRORS, LOG_FILE, "Key: " + kvp.Key.ToString() + "Value: " + kvp.Value.ToString());

                if (!this.Batch.TryAppendDetailSet(documentID, kvp.Key, kvp.Value, false, out error))
                {
                    WriteLogEntry(LOG_ERRORS, LOG_FILE, "TryAppendDetailSet Error at DocID: " + documentID + ", Error: " + error.Message + ", kvp.Key.Length = " + kvp.Key.Length.ToString());
                }

还有这种类型的KVP叫什么?我很难用谷歌搜索它?具有两个数组的 KVP 在我看来就像是多维 KVP。

还有 TryAppendDetailSet(string,string[],object[],bool,error) 的格式 }

【问题讨论】:

  • 使用字符串数组的 KVP 仍然只是一个 KVP。但是,在这里将两组数据配对似乎确实是一种滥用。无论哪种方式,都不清楚您要在这里实现什么。
  • 我只想知道传递给 TryAppendDetailSet 函数的确切内容。我相信我正在使用嵌套的 for 循环将所有内容写到日志中。只是我不确定对于具有两个数组的这个 KVP,for each 是如何工作的。我假设它以与我的嵌套 for 循环将它们放入我的日志相同的方式遍历 KVP。我认为最好输出键和值,因为它们即将传递到函数中,请确保我的理解是正确的。
  • kvp.Key 是一个字符串数组,kvp.Value 也是。至于它在做什么,谁知道呢——我们没有代码可以看到。
  • 这不是它用它做什么的问题,而是通过什么的问题。我一直在努力寻找一种将 kvp.Key 和 kvp.Value 值输出到日志的简单方法。为此,我想我可以为当前迭代做类似myStringKey = kvp.key;myStringvalue = kvp.Value 的事情,然后将我的新字符串输出到文件中。但是WriteLogEntry(LOG_ERRORS, LOG_FILE, "Key: " + kvp.Key.ToString() + "Value: " + kvp.Value.ToString()); 在我的日志中给了我这个。键:System.String[] 值:System.String[]
  • 就像我上面说的,kvp.Key一个字符串数组,你明白吗?

标签: c# .net keyvaluepair


【解决方案1】:

KeyValuePair&lt;TKey, TValue&gt; 类型主要用于Dictionary 中的条目。因此,其意图是 Key 字段通常是您用于字典查找的东西……想想 intstring。以这种方式使用KeyValuePair 类型是不寻常的……不是闻所未闻,但也不是很常见。

随着元组的出现,它就更不常见了。在我们有简单的元组之前,KeyValuePair 有时被用来代替两个成员的 Pair 元组。如果您使用的是最新版本的 .Net,则可以添加 System.ValueTuple 包并使用类似这样的代码:

var orderedList = new List<(string[], string[])>();

这为您提供了一个有序的元组列表,其中元组中的两个项目都是字符串数组。您也可以考虑使用锯齿状数组:

 var orderedList = new List<string[2][]>();

或者因为看起来条目的数量总是相同的,所以一个多维数组:

var orderedList = new List<string[,]>();

将数组项添加到该列表时的第一个维度始终为 2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2017-08-29
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多