【发布时间】:2015-02-18 21:28:02
【问题描述】:
基本上,我在渲染参数中使用了多列表来进行类别选择。所以我得到了选定项目的管道分隔 GUID 并且需要获取项目集合,是否有 Sitecore api 支持的任何方法而不是循环迭代。与任何内置的 Sitecore 方法相比,这在效率方面可能会很昂贵。
【问题讨论】:
标签: c# sitecore sitecore7.2
基本上,我在渲染参数中使用了多列表来进行类别选择。所以我得到了选定项目的管道分隔 GUID 并且需要获取项目集合,是否有 Sitecore api 支持的任何方法而不是循环迭代。与任何内置的 Sitecore 方法相比,这在效率方面可能会很昂贵。
【问题讨论】:
标签: c# sitecore sitecore7.2
Sitecore.Data.Fields中有一个MultilistField类,使用如下
var mlf = new MultilistField(item.Fields["field name"]).
mlf.GetItems();
我不认为它比你已经在做的更有效率。事实上,它在内部可能也是如此。
【讨论】:
另一种避免潜在 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();
【讨论】:
MultilistField。我只是给出官方答案:)