我已經嘗試了下面的代碼,在添加它之前刪除字典中的重複鍵。使用C#中的LINQ刪除字典中的重複鍵
樣品的編號:
string conString = "Host = local;UserName = UID; Password = PWD;Host =localhost";
var sp = conString.Split(';');
Dictionary<string, string> keyValue = new Dictionary<string, string>();
foreach (var k in sp)
{
if (k.Contains('='))
{
var conSP = k.Split(new char[] { '=' }, 2);
if (keyValue.All(i =>
i.Key != conSP[0]))
keyValue.Add(conSP[0], conSP[1]);
}
}
示例結果:
KEYVALUE [0]。重點=主機,KEYVALUE [0]。價值=本地
KEYVALUE [1]。重點= username,KeyValue [1] .Value = UID
KeyValue [2] .Key = Password,KeyValue [2] .Value = PWD
但我需要使用linq相同的結果。所以我試着用linq下面的代碼來獲取輸出。
var keyValue = conString.Split(';')
.Where(kvp => kvp.Contains('='))
.Select(kvp => kvp.Split(new char[] { '=' }, 2))
.ToDictionary(kvp => kvp[0].Trim(),kvp => kvp[1].Trim(),StringComparer.InvariantCultureIgnoreCase);
但在這段代碼中,我得到了下面的異常。
「具有相同鍵的項已被添加」
任何人都可以建議我如何解決這個問題?
在此先感謝。
字典只允許唯一的密鑰,所以你不能有重複。 – jdweng
爲什麼你必須使用linq? –