从IEnumerable转换为ISet

Ton*_*der 2 c# hashset

public override ISet<string> SetCellContents(string name)
{          
    HashSet<String> list = graph.GetDependents(name);
    return list;
}
Run Code Online (Sandbox Code Playgroud)

Graph.getDependents(name)返回IEnumerablea HashSet<String>.我收到一个错误:

"无法从IEnumerable转换为ISet"

我不知道该怎么办?

Gil*_*een 6

您应该实例化一个新的HashSet并将其graph.GetDependents(name)作为输入传递.另外作为GetDependents返回,IEnumerable<HashSet<string>>然后SelectMany在创建新的HashSet" 之前用于展平内部集合"

public override ISet<string> SetCellContents(string name)
{
    return new HashSet<string>(graph.GetDependents(name).SelectMany(hs => hs));
}
Run Code Online (Sandbox Code Playgroud)

作为旁注,使用名称list不是List<T>(或一般)的东西不是一个好习惯.你可以使用类似的东西dependenciesSet.