在下面的代码中,return语句引发异常。

private IEnumerable<DirectoryEntry> GetDomains()
{
    ICollection<string> domains = new List<string>();

    // Querying the current Forest for the domains within.
    foreach (Domain d in Forest.GetCurrentForest().Domains)
    {
        domains.Add(d.Name);
    }

    return domains;  //doesn't work
}


这个问题可能有什么解决方案?

最佳答案

将您的方法重新定义为

private IEnumerable<string> GetDomains()
{
    ...
}


因为您需要的是string而不是DomainsDirectoryEntry的列表。 (假设您要添加“ d.Name”)

而且,仅使用LINQ会容易得多:

IEnumerable<string> domains = Forest.GetCurrentForest().Domains.Select(x => x.Name);


这将返回一个IEnumerable<string>,并且不会浪费额外的内存来创建单独的列表。

关于c# - 怎么把ICollection转换成IEnumerable?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23795165/

10-09 09:10