0

假设我有以下代码行:

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);
}
4

3 回答 3

2

我没有必要的设置来测试它,但是这样的东西会起作用吗?

String[] keys = ...;
context.Load(   itemCollection
              , item => item
                        .Include(keys
                        .Select(key => { i => i[key] })
                        .ToArray()
            );
于 2013-03-13T00:47:53.297 回答
0

看看这个问题的答案。
我在创建动态 where 子句时遇到了类似的问题,这就是我解决它的方法。

于 2013-03-13T00:26:21.507 回答
0

使用以下语法(适用于 JavaScript,但尚未在 C# 中测试过):

context.load(this.list, 'Include(Title, Name)');

'Include(Title, Name)'是一个字符串,更容易根据用户输入生成。

this.list 指的是之前加载的共享点列表。

于 2013-03-14T23:19:18.720 回答