c# - 从 IEnumerable 转换为 ISet

标签 c# hashset

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

Graph.getDependents(name)返回 IEnumerableHashSet<String> 。我收到错误:

"cannot convert from IEnumerable to ISet"

我不知道该怎么办?

最佳答案

您应该实例化一个新的 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 的内容相反。

关于c# - 从 IEnumerable 转换为 ISet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52566577/

相关文章:

C#:是否可以返回 IOrderedEnumerable<T>?

c# - 如何计算 Entity Framework 中的非原始对象列表?

Java 字符串或对象的哈希集比较

c# - 性能思路(内存中的 C# 哈希集和包含太慢)

java - 从 HashSet 中删除元素

c# - 解码 H264 帧 C#

c# - 我可以在 linq 中实现属性并且不调用方法两次吗?

c# - 从 .NET 探查器访问 ThreadStatic 字段

java - HashSet - 访问/查找 HashSet 中的对象是否为 O(1)?

android - 从字符串中删除无效的数字字符