增加列表中的项目值<keyvaluepair <string,int =“”>&gt;如果密钥已存在</keyvaluepair <string,>

时间:2013-12-06 19:22:22

标签: c# linq

我有keyvaluepair<string, int>的列表。

当我添加到列表中时,我检查密钥是否已经存在,我将值的计数增加到+1。如果没有,我添加新的(键,1)。这就是我现在这样做的方式。有没有更好,更好的方法来做到这一点。我是LINQ的新手,但非常喜欢它。

IEnumerable<KeyValuePair<string, int>> kvp = myList.Where(x => x.Key.ToLower() == name.ToLower());
if (kvp == null || kvp.Count() == 0)
{
    //Add first occurence
    myList.Add(new KeyValuePair<string, int>(name, 1));
}
else
{
    //Update occurence count +1 and add the new key
    //TODO : Refactor
    KeyValuePair<string, int> updatedKVP = new KeyValuePair<string, int>(name, kvp.FirstOrDefault().Value + 1);
    myList.Remove(kvp.FirstOrDefault());
    myList.Add(updatedKVP);
}

感谢。

1 个答案:

答案 0 :(得分:7)

听起来你因为区分大小写而保留了kvps列表。

这是另一种选择:

var dict = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
if(dict.ContainsKey(name))
{
   dict[name] += 1;
}
else
{
   dict[name] = 1;
}