Wes*_*ley 2 c# sql sharepoint caml sharepoint-2010
我之前有一个问题(已经解决了),为什么我被限制在CAML中的两个参数.
我现在想知道的是,我可以重新格式化这个CAML查询以接受5个OR参数,其中我从列表中收集所有项目我找到了5个参数中的任何一个的匹配项.
我问的原因是,我仅限于使用Sandbox解决方案Web部件的Designer部署.这些解决方案的资源非常有限,我希望尽可能提高查询效率,而且大多数LINQ解决方案都不像CAML那样有效地改变SQL调用.
小智 5
是.没有限制OR
.(由于CAML如何转换为SQL,最大深度约为2000个链式运算符,但这可以通过平衡查询树来增加.)
只要保持嵌套了OR
的所希望的组合.我建议使用XNode/XElement和递归来创建一个"神奇地"执行此操作的函数.
请注意,嵌套非常简单(我以S表达式形式编写,也是显示发生情况的前缀,以及中缀 C#条件等效项):
1: (OR a b) => a || b => a || b
2: (OR (OR a b) c) => (a || b) || c => a || b || c
3: (OR (OR (OR a b) c) d) => ((a || b) || c) || d => a || b || c || d
Run Code Online (Sandbox Code Playgroud)
请注意,每个新的OR
只是"包装"前一个表达式.
性能基于底层SQL Server数据库的性能,并根据CAML中使用的字段而有所不同.如果该字段是索引的一部分,那么对于"等于"或"范围"条件,操作非常快.即使列不是索引的一部分,对于"小"大小的列表,它仍然是一个非常快速的操作.
最好的办法是使用像U2U CAML查询生成器("Windows版本")这样的工具"试试",看看有什么性能问题,如果有的话.
快乐的编码.
归档时间: |
|
查看次数: |
384 次 |
最近记录: |