C# · 12月 23, 2021

c# – 在客户端对象模型中使用Linq对象模型来自sharepoint

我正在尝试使用LINQ对我从客户端对象模型得到的结果. var rolesAssignments = context.Web.RoleAssignments;context.Load(rolesAssignments,roles => roles.IncludeWithDefaultProperties(role => role.Member,role => role.RoleDeFinitionBindings));context.ExecuteQuery();var hasAdmin = rolesAssignments.Select(x => x.RoleDeFinitionBindings.Cast<RoleDeFinition>().Select(y => y.RoleTypeKind == RoleType.Administrator)).Any();

我得到:

{System.NotSupportedException: Invalid usage of query execution. The query should be executed by using ExecuteQuery method on the client context object.

但是,当我重写这个以使用嵌套foreach循环,它工作正常.

从我可以从我的LINQ查询看到,我不使用任何未加载的属性.

解决方法 这是我的头顶,但它应该给你的想法.您可能会在查询中收到有关使用Any的投诉.如果这样删除它,然后在ExecuteQuery完成后检查hasAdmin.Any(). var query = rolesAssignments.Select(x => x.RoleDeFinitionBindings.Cast<RoleDeFinition>().Select(y => y.RoleTypeKind == RoleType.Administrator)).Any();var hasAdmin = context.LoadQuery(query);context.ExecuteQuery();