Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 快速从SP列表中获取用户有权查看的不同值_C#_Linq_Sharepoint - Fatal编程技术网

C# 快速从SP列表中获取用户有权查看的不同值

C# 快速从SP列表中获取用户有权查看的不同值,c#,linq,sharepoint,C#,Linq,Sharepoint,我从SharePoint列表中提取不同的数据,并将其附加到下拉列表中 起初我是这样做的,发现速度非常慢 List<Data> years = new List<Data>(); foreach (SPListItem listitem in items) { SPUser user = SPContext.Current.Web.CurrentUser; if (listitem.DoesUserHavePermissions(user, SPBase

我从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());
但是,这会返回用户无权查看的项目。如何使用GetItems方法,使其仅获取用户有权查看的项目?还有,有没有更快的方法?这两种方法似乎都很慢

var items = listDocuments.GetItems(); 
var distinctYear = (from SPListItem i in items
                 select new
                 {
                      Year = i["Year"].ToString()                                                   
                 }).Distinct();
此查询将仅返回用户有权查看的项目,因为sharepoint保留权限级别。它以前不起作用的原因是因为我包含了这个

SPSecurity.RunWithElevatedPermissions()
在代码前面

SPSecurity.RunWithElevatedPermissions()