Проблема преобразования элемента Sitecore [] с использованием ToList‹T›

Работа с расширениями Sitecore и Linq.

Я пытаюсь преобразовать массив элементов в список, используя следующий фрагмент кода:

Item variationsFolder = masterDB.SelectSingleItem(VariationsFolderID.ToString());
List<Item> variationList = variationsFolder.GetChildren().ToList<Item>();

Однако я продолжаю получать эту ошибку всякий раз, когда пытаюсь построить:

'Sitecore.Collections.ChildList' does not contain a definition for 'ToList' and the best extension method overload 'System.Linq.Enumerable.ToList<TSource>(System.Collections.Generic.IEnumerable<TSource>)' has some invalid arguments

У меня есть следующие варианты использования:

using System.Linq;
using System.Xml.Linq;

Ссылаюсь:

System.Core

Я только что скопировал этот код из другого места, поэтому он должен работать нормально, могу только подумать, что есть что-то простое (например, ссылка или что-то, чего мне не хватает).


person philba888    schedule 24.05.2010    source источник


Ответы (1)


У меня нет опыта работы с SiteCore, но, возможно, ChildList реализует IEnumerable, а не IEnumerable<T>?

Если это так, попробуйте это:

List<Item> variationList = variationsFolder.GetChildren()
                                           .Cast<Item>()
                                           .ToList();

В основном Cast<T> преобразует IEnumerable в IEnumerable<T> путем приведения каждого элемента.

person Jon Skeet    schedule 24.05.2010
comment
Обратите внимание, что это исправлено в версии 6.2. Затем вы можете сразу использовать ToList(). - person Alex de Groot; 26.05.2010