我如何获得此KVP的所有内容

时间:2017-08-10 13:27:59

标签: c# .net keyvaluepair

我试图找出所有传递给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又叫什么? google很困难吗?一个带有两个阵列的KVP听起来像是一个多维KVP。

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

1 个答案:

答案 0 :(得分:0)

KeyValuePair<TKey, TValue>类型主要用于Dictionary中的条目。因此,目的是Key字段通常用于字典查找...想到intstring。看到以这种方式使用的KeyValuePair类型是不寻常的......不是闻所未闻,但也不常见。

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

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

它为您提供了一个有序的元组列表,其中元组中的两个项都是字符串数组。您可能还会考虑锯齿状阵列:

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

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

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

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