假设我有以下代码行:
context.Load(itemCollection, item => item.Include(i => i["Title"], i => i["Name"]));
有没有什么方法可以动态指定item.Include()
函数的参数而不是像上面那样对它们进行硬编码?
理想情况下,我希望允许用户选择要检索对象的属性,例如Title
,Name
,Description
等。
仅供参考,这是ClientContext.Load
功能。此功能来自Microsoft.SharePoint.Client.dll
public void Load<T>(T clientObject, params Expression<Func<T, object>>[] retrievals) where T : ClientObject
{
if ((object) clientObject == null)
throw new ArgumentNullException("clientObject");
ClientAction.CheckActionParameterInContext(this, (object) clientObject);
DataRetrieval.Load<T>(clientObject, retrievals);
}
答案 0 :(得分:2)
我没有必要的设置来测试它,但是会有这样的工作吗?
String[] keys = ...;
context.Load( itemCollection
, item => item
.Include(keys
.Select(key => { i => i[key] })
.ToArray()
);
答案 1 :(得分:0)
查看this question的答案 我在创建动态where子句时遇到了类似的问题,这就是我如何解决它。
答案 2 :(得分:0)
使用以下语法合成(在JavaScript中有效,但未在C#中测试过):
context.load(this.list, 'Include(Title, Name)');
'Include(Title, Name)'
是一个字符串,根据用户输入更容易生成。
this.list
指的是之前加载的共享点列表。