Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint &引用;不包含“;在CAML?_Sharepoint_Caml_Listitem - Fatal编程技术网

Sharepoint &引用;不包含“;在CAML?

Sharepoint &引用;不包含“;在CAML?,sharepoint,caml,listitem,Sharepoint,Caml,Listitem,在中,我可以使用“Contains”-元素查询SharePoint Listitems,但没有可以使用的“notcontain”-元素 那么,获取不包含字符串的项的最佳方法是什么?有没有比循环浏览每一项更好的方法?相同的限制适用于BeginWith。遗憾的是,我不知道有什么好的解决办法。你可以做的是:做一个包含查询,循环遍历每个项目并获取ID,然后再做一个大的查询“IDNoteQual1或IDNoteQual2或IDNoteQual3……”因为据我所知,ID是索引的,这对数据库的影响应该较小,但

在中,我可以使用“Contains”-元素查询SharePoint Listitems,但没有可以使用的“notcontain”-元素


那么,获取不包含字符串的项的最佳方法是什么?有没有比循环浏览每一项更好的方法?

相同的限制适用于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(查找(“关键的”,[标题])