3

考虑以下代码:

var results = searcher.FindAll();

SearchResult[] srList = new SearchResult[results.Count];
results.CopyTo(srList, 0);

哪里searcher.FindAll()返回一个System.DirectoryServices.SearchResultCollection

我是否必须使用 将CopyTo它们变成一个可枚举的对象,以便以后在 a 中使用Parallel.ForEach 如果是这样,为什么?

我有using System.Linq,但没有ToList弹出方法。

谢谢大家!

4

2 回答 2

9

您可以使用Cast<T>()将 aSearchResultCollection转换为IEnumerable<T>,并ToArray<T>()创建一个数组。

SearchResult[] results = searcher.FindAll().Cast<SearchResult>().ToArray();

确保包含 System.Linq 命名空间:

using System.Linq;
于 2013-02-28T18:17:21.080 回答
3

您可以使用Cast<T>扩展方法从非泛型IEnumerable变为IEnumerable<SearchResult>

var results = searcher.FindAll().Cast<SearchResult>();
于 2013-02-28T18:25:43.020 回答