我从SharePoint列表中提取不同的数据并将其附加到下拉列表中。
起初我是这样做的,发现它非常慢。
List<Data> years = new List<Data>();
foreach (SPListItem listitem in items)
{
SPUser user = SPContext.Current.Web.CurrentUser;
if (listitem.DoesUserHavePermissions(user, SPBasePermissions.Open))
{
string YearColumn = Convert.ToString(listitem["Year"])
years.Add(new Data
{
Year = YearColumn
});
}
}
var distinctYear = years.GroupBy(x => x.Year, (key, group) => group.First());
我已经修改了我的代码,希望它能更快地运行:
var items = listDocuments.GetItems();
var distinctYear = (from SPListItem i in items
select new
{
Year = i["Year"].ToString()
}).Distinct();
但是,这会返回用户无权查看的项目。如何使用GetItems方法使其仅获取用户有权查看的项目?另外,有更快的方法吗?这两种方式似乎都很慢。
答案 0 :(得分:0)
var items = listDocuments.GetItems();
var distinctYear = (from SPListItem i in items
select new
{
Year = i["Year"].ToString()
}).Distinct();
此查询将仅返回用户有权查看的项目,因为sharepoint保留了权限级别。之前没有工作的原因是因为我已经包含了这个
SPSecurity.RunWithElevatedPermissions()
早期的代码。