【发布时间】:2017-12-02 18:02:58
【问题描述】:
我已尝试使用以下代码在添加之前从字典中删除重复键。
示例代码:
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].Key = 主机,KeyValue[0].Value = 本地
KeyValue[1].Key = 用户名,KeyValue[1].Value = UID
KeyValue[2].Key = 密码,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);
但在这段代码中,我得到了以下异常。
“已添加具有相同键的项”
谁能建议我如何解决这个问题?
提前致谢。
【问题讨论】:
-
字典只允许唯一的键,所以你不能有重复。
-
为什么一定要使用linq?
标签: c# linq dictionary