2

我正在使用 SharePoint 客户端对象模型来查询 Sharepoint 中的列表,并且需要在帮助程序程序集中动态创建 Linq 查询。

如何从包含 "Id","Title","LinkFileName","Status" 的列名列表<string> 创建以下内容?

context.Load(listItems, items => items.Include(  
  item => item["Id"],  
  item => item["Title"],  
  item => item["LinkFilename"],  
  item => item["Status"]  
));     
4

1 回答 1

4

非常感谢 Manvir 的帖子解决了我的问题:

http://www.manvir.net/invalidqueryexpressionexception-the-query-expression-is-not-supported/

将 替换为ClientContext.Load支持ClientContext.LoadQuery运行时构建的表达式。

private static Expression<Func<ListItem, object>>[] CreateListItemLoadExpressions(List<string> viewFields)
{
   List<Expression<Func<ListItem, object>>> expressions = new List<Expression<Func<ListItem, object>>>();
   foreach (string viewFieldEntry in viewFields)
   {
      string fieldInternalName = viewFieldEntry;
      Expression<Func<ListItem, object>> retrieveFieldDataExpression = listItem => listItem[fieldInternalName];
      expressions.Add(retrieveFieldDataExpression);
   }
   return expressions.ToArray();
}
于 2013-05-20T02:37:15.187 回答