Sharepoint &引用;不包含“;在CAML?
在中,我可以使用“Contains”-元素查询SharePoint Listitems,但没有可以使用的“notcontain”-元素Sharepoint &引用;不包含“;在CAML?,sharepoint,caml,listitem,Sharepoint,Caml,Listitem,在中,我可以使用“Contains”-元素查询SharePoint Listitems,但没有可以使用的“notcontain”-元素 那么,获取不包含字符串的项的最佳方法是什么?有没有比循环浏览每一项更好的方法?相同的限制适用于BeginWith。遗憾的是,我不知道有什么好的解决办法。你可以做的是:做一个包含查询,循环遍历每个项目并获取ID,然后再做一个大的查询“IDNoteQual1或IDNoteQual2或IDNoteQual3……”因为据我所知,ID是索引的,这对数据库的影响应该较小,但
那么,获取不包含字符串的项的最佳方法是什么?有没有比循环浏览每一项更好的方法?相同的限制适用于BeginWith。遗憾的是,我不知道有什么好的解决办法。你可以做的是:做一个包含查询,循环遍历每个项目并获取ID,然后再做一个大的查询“IDNoteQual1或IDNoteQual2或IDNoteQual3……”因为据我所知,ID是索引的,这对数据库的影响应该较小,但闻起来还是很糟糕
对于较小的列表,这并不重要,对于较大的列表,我会使用SQL Server Profiler查看其影响。对于“Contains”和“BeginsWith”的问题,我也感到困扰。我希望在下一版本的Sharepoint中,caml将扩展为真正的工具,而不仅仅是我们腿上的一块石头
我这样做的方式是尽可能多地指定查询,然后过滤与C#代码中的条件不匹配的行。有时这很难看,因为有时你必须处理100行,最后得到一个符合条件的结果。@drax:让我们希望CAML消失吧-句号。这无疑是当前SP编程中最糟糕的方面之一 那么,什么是获得成功的最佳途径呢 不包含字符串的项目 尝试使用计算列通过创建相反的值来反映您正在查看的值 例如,假设该列名为IsCritical。然后,将该列添加为“是/否”,并将公式添加为
=ISNUMBER(FIND("Critical"), [Title])
然后在CAML查询中
<Query>
<Where>
<Eq>
<FieldRef Name='IsCritical'/>
<Value Type='Boolean'>0</Value>
</Eq>
</Where>
</Query>
0
此查询中的0有点反映“不重要”。然而,我不确定性能可能是什么,而不是使用一个本地CAML“notcontaints”,不幸的是,它并不存在
另请参见尝试不包括
<NotIncludes>
<FieldRef Name='FileLeafRef' />
<Value Type='Text'>stringvalue</Value>
</NotIncludes>
stringvalue
那太好了,但产品的许多部分都是基于此构建的!CAML作为一种列表定义语言(ONET.xml)非常有用。CAML作为SQL的替代品是一个笑话,甚至不是一个好笑话。它闻起来真的很糟糕,除了查询的其余部分之外,您是否尝试过使用计算列?@AlexanderN计算列并不总是有效,例如,如果您正在筛选已创建的字段或属于内容类型的其他字段,则这些字段在列列表中似乎不可用。公式中有错误。正确的公式是-=ISNUMBER(查找(“关键的”,[标题])