从IEnumerable转换为ISet

时间:2018-09-29 08:26:01

标签: c# hashset

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

Graph.getDependents(name)返回IEnumerable中的HashSet<String>。我收到错误消息:

  

“无法从IEnumerable转换为ISet”

我不确定该怎么办?

1 个答案:

答案 0 :(得分: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));
}

作为旁注,将名称list用于不是List<T>(或一般而言)的内容不是一个好习惯。您可以改用dependenciesSet之类的东西。