2010-05-24 4 views
1

Работа с расширениями Sitecore и Linq.Проблема преобразования Sitecore Item [] с использованием ToList <T>

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

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 

у меня есть следующие usings:

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

Am реферирование:

System.Core 

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

ответ

5

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

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

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

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

+6

Обратите внимание, что это исправлено в версии 6.2. Затем вы можете использовать ToList() сразу. –