Как конфертировать из ICollection в IEnumerable?

1

В приведенном ниже коде оператор 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
    }

Каким может быть возможное решение этой проблемы?

Теги:
active-directory

2 ответа

3

Переопределите свой метод как

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

поскольку вам нужен список string а не Domains или DirectoryEntry. (предполагается, что вы добавляете "d.Name")

Кроме того, было бы намного проще использовать LINQ:

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

Это вернет IEnumerable<string>, и он не будет тратить лишнюю память на создание отдельного списка.

  • 2
    это не нужно, а также не является проблемой, если тип возвращаемого значения IEnumerable <string>, возвращающий список строк, будет в порядке. актуальная проблема - тип возвращаемого значения метода.
0

Задайте тип доменов в IList<string> или выполните, как предлагает Натан:

private IEnumerable<string> GetDomains()
{
  return Forest.GetCurrentForest().Domains.Select(x => x.Name);
}
  • 0
    Хорошо, я обновлю

Ещё вопросы

Сообщество Overcoder
Наверх
Меню