我想使用CSOM加载SharePoint Project Server项目
var proj = ctx.LoadQuery(ctx.Projects
.Where(p => p.Id == projGuid)
.Include(p => p.Id, p => p.Name));
ctx.ExecuteQuery();
我需要Include()
是动态的,所以我这样做了:
Expression<Func<PublishedTask, object>>[] funcArray
= new Expression<Func<PublishedTask, object>>[2];
funcArray[0] = p => p.Name;
funcArray[1] = p => p.Id;
var proj = ctx.LoadQuery(ctx.Projects
.Where(p => p.Id == projGuid)
.Include(funcArray));
ctx.ExecuteQuery();
现在我只获取了从String中加载哪个属性的信息,所以我试过这样的事情:
funcArray[0] = p => p.GetType().GetProperty("Name");
funcArray[1] = p => p.GetType().GetProperty("Id");
这不起作用,我不太确定如果我做得对,或者甚至可以做到。
答案 0 :(得分:0)
您可以传递一个以逗号分隔的字符串,并使用一些Linq将它们拆分并在查询中包含每个字符串,而不是传递函数数组:
var includeFields = "Name,Id";
var proj = ctx.Projects.GetByGuid(projGuid);
foreach (var fieldName in includeFields.Split(','))
{
ctx.Load(proj, includes => includes[fieldName]);
}
ctx.ExecuteQuery();
你也可以使用方法&#34; GetByGuid&#34;而不是Linq Where。