Получить коллекцию элементов по идентификаторам GUID, разделенным конвейером, в sitecore

В основном я использовал мультисписок в параметре рендеринга для выбора категории. поэтому я получил GUID выбранного элемента, разделенные конвейером, и мне нужно получить коллекцию элементов, есть ли какой-либо метод, поддерживаемый API Sitecore, вместо повторения в цикле. это может быть дорого с точки зрения эффективности по сравнению с любым встроенным методом Sitecore.


person syed Ahsan Jaffri    schedule 18.02.2015    source источник


Ответы (2)


В Sitecore.Data.Fields есть класс MultilistField, который используется следующим образом.

var mlf = new MultilistField(item.Fields["field name"]).
mlf.GetItems();

Я не думаю, что это более эффективно, чем то, что вы уже делаете. На самом деле, он, вероятно, делает то же самое внутри.

person Martin Davies    schedule 18.02.2015

Другой способ избежать потенциального ArgumentNullException (в случае, если item.Fields["field name"] имеет значение null) — использовать Sitecore.Data.ID.ParseArray в сочетании с оператором linq для получения списка элементов следующим образом:

var items = ID.ParseArray(item["field name"])
               .Select(id => item.Database.GetItem(id)).ToList();
person Matthew Dresser    schedule 18.02.2015
comment
Хорошая точка зрения. На самом деле я предпочитаю делать это именно так и редко использую MultilistField. Я просто дал официальный ответ :) - person Martin Davies; 18.02.2015