字典键和值是否以相同的顺序枚举?

时间:2015-12-16 07:51:51

标签: c# dictionary

我有这样的场景,我必须将作为输入发送的字典作为逗号分隔的字符串发送到存储过程。

我想知道如果我这样做会有任何可能的情况,它可能会发送字典中给定键的错误值。

[>9]0;_(0

3 个答案:

答案 0 :(得分:5)

阅读文档。它明确指出:

  

未指定Dictionary.KeyCollection中的键的顺序,但它与Dictionary.ValueCollection属性返回的Values中的关联值的顺序相同。

  

Dictionary.ValueCollection中的值的顺序未指定,但它与Dictionary.KeyCollection属性返回的Keys中的关联键的顺序相同。

所以是的,键和值匹配,但正如评论者指出的那样,你可能已经遇到了其他问题。

答案 1 :(得分:0)

键也不是空的,也不重复(如果发生这种情况,它会抛出异常),所以它不会发送特定键的incorect值(我想你担心2个或更多项会有相同的键)和string.Join将不知道选择哪一个)。 有关字典https://msdn.microsoft.com/en-us/library/k7z0zy8k(v=vs.110).aspx

的更多信息

答案 2 :(得分:0)

Joey的回答是正确的,尽管只有在没有对字典进行任何修改的情况下才能保证顺序,如评论中所指出的那样。如果你想确保订单是一样的,你可以这样做:

var dictionary = new Dictionary<int, string>();
var listOfKeyValuePairs = dictionary.ToList();
var keys = listOfKeyValuePairs.Select(kvp => kvp.Key);
var values = listOfKeyValuePairs.Select(kvp => kvp.Value);