我在处理集合时遇到问题。我想根据另一个集合的内容从集合中删除一些条目。
我有两个收藏品;一个包含我通过SPQuery(SPListItemCollection)获得的一组工作流任务,另一个是来自人员选择器(SPFieldUserValueCollection)的用户列表。
我想获得一个列表(类型为SPFieldUserValueCollection),该列表仅包含那些尚未分配查询中列出的工作流任务的用户。
没有遍历用户列表,并将LookupID与工作流任务上的“Assigned To”字段进行比较(我真的不想这样做),如何才能做到最好?
我正在寻找一个优雅的解决方案。
答案 0 :(得分:1)
另一种可能性是使用 SPQuery 查询用户列表。
这比迭代所有用户要快得多。
您可以使用查询中的<In>
标记来获取尚未由工作流分配的所有用户。
对于此标记,请检查:http://rmanimaran.wordpress.com/2011/03/11/new-in-sharepoint-2010-caml-query/
如何从页面中排除项目的示例:
<Where>
<And>
<Eq>
<FieldRef Name="Specialization"/>
<Value Type="Lookup">SQL Server</Value>
</Eq>
<NotIncludes>
<FieldRef Name='Specialization'/>
<Value Type='Lookup'>Crystal Report</Value>
</NotIncludes>
</And>
</Where>