我需要從HttpContext
收集數據並將其存儲在一個Dictionary
,但我有一個問題。如果我遇到與Dictionary
已有的密鑰配對,如何在Dictionary
中重寫KeyValuePair
?如何重寫字典中的重複鍵?
例如,我的功能:
private static IDictionary<string, object> FromNameValueCollection(NameValueCollection rq)
{
return (from string query in rq
select new KeyAndValue { Key = query, Value = (object)rq[query] })
.ToDictionary(ExtractKey, ExtractValue, StringComparer.InvariantCultureIgnoreCase);
}
KeyAndValue
是我的特殊類是什麼樣子KeyValuePair,但它有場CollectionName
- 表示源集合(QueryString
,Form
或Headers
)我的價值的來源。
class KeyAndValue
{
public string Key { get; set; }
public object Value { get; set; }
public string CollectionName { set; get; }
}
而且
private static string ExtractKey(KeyAndValue kvp)
{
return (string.IsNullOrEmpty(kvp.Key) ? kvp.ColName : kvp.Key);
}
private static string ExtractValue(KeyAndValue kvp)
{
return kvp.Value;
}
我懷疑,我不明白什麼是StringComparer.InvariantCultureIgnoreCase
,以及它是如何工作的。或者...我不明白如何正確使用它!所以,我需要幫助。
謝謝!
字典的全部目的是它的密鑰是唯一的。使用帶有List值的字典,例如'Dictionary>'。 –
@RedSerpent這就是爲什麼我使用字典。但我的來源是'NameValueCollections',正如我所說的。 'ILookUp'對我不好。我的輸出數據只能是'Dictionary'。 –
Matterai
'StringComparer.InvariantCultureIgnoreCase'完全按照它所宣稱的:以忽略大小寫的語言相關方式比較字符串,但不適合在任何特定文化中顯示。它的主要應用是以不同文化相同的方式排列字符串。 (http://msdn.microsoft.com/library/z3e2ccx2.aspx)。 –