无法从IEnumerable <string>转换为字符串

时间:2019-09-07 00:53:59

标签: c# ienumerable

我试图在两个循环中清除和替换哈希集中的值。

我相信我已经使用了清晰的方法,但是我似乎无法将值重新添加到HashSet中。

public void ReplaceValues(string s, IEnumerable<string> newValues) 
{
    foreach(KeyValuePair<string, HashSet<string>> kvp in deps) //deps is a dictionary<string, HashSet<string>>

    dictionary[s].Clear();

    foreach(KeyValuePair<string, HashSet<string>> kvp in deps)
    //cannot figure out one line to replace the values with the new dependents, throws error code here
}

我希望先清除(a,b)形式的kvps,然后再添加新值,将其替换为(a,c)

2 个答案:

答案 0 :(得分:1)

我认为您无需遍历字典即可获得配对。有了输入参数中的键后,您可以像下面这样在单行中替换字典项的值。

node.getLeft().getStudent().name

尝试输入代码here

更新:如果要持久保留需要替换其值的Hashset的引用,则遍历newValues中的每个项目并将其清除后将它们添加到现有的HashSet对象中,如下面的-< / p>

public static void ReplaceValues(string s, IEnumerable<string> newValues) 
{
    if(dictionary.ContainsKey(s))
        dictionary[s]  =  new HashSet<string>(newValues);
}

答案 1 :(得分:1)

您可以执行以下操作:

public void ReplaceValues(string s, IEnumerable<string> newValues) 
{
    if (deps.TryGetValue(s, out var hs)) {
        hs.Clear();
        foreach (var value in newValues)
        { hs.Add(value); }
    }
}