online microsoft example sharepoint caml listitem

sharepoint - microsoft - "No contiene" en CAML?



sharepoint list csom (5)

@drax: esperemos que CAML se vaya - punto. Definitivamente es uno de los peores aspectos de la programación SP actual.

En CAML puedo consultar los elementos de lista de SharePoint utilizando el elemento "Contiene", pero no hay ningún elemento "no contiene" que pueda usar.

Entonces, ¿cuál es la mejor manera de obtener los artículos que no contienen una cadena? ¿Hay una mejor manera de recorrer todos y cada uno de los artículos?


Este problema con ''Contiene'' y ''Comienza con'' me molesta también. Espero que en la próxima versión de Sharepoint caml se extienda para ser una herramienta real, no solo una piedra en nuestra pierna.

La forma en que lo hago es especificar la consulta tanto como sea posible y luego filtrar las filas que no coinciden con las condiciones en el código C #. A veces es bastante feo, ya que a veces tienes que procesar 100 filas para finalizar con 1 resultado que coincida con las condiciones.


La misma restricción se aplica a BeginWith. No conozco ninguna buena solución tristemente. Lo que podría hacer: haga una Contains-Query, recorra cada elemento y obtenga los ID, luego haga otra consulta grande para "ID NotEqual 1 o ID NotEqual 2 o ID NotEqual 3 ......" Dado que ID está indexado como Hasta donde yo sé, eso debería tener un impacto menor en la base de datos, pero todavía huele realmente mal.

Para una lista pequeña no importa, para listas más grandes usaría el Analizador de SQL Server para ver cuál es el impacto.


Entonces, ¿cuál es la mejor manera de obtener los artículos que no contienen una cadena?

Intente utilizar una columna calculada para reflejar el valor que está buscando al crear el valor opuesto.

Por ejemplo, supongamos que la columna se llama IsCritical . Luego, agregue la columna como "SÍ / NO" y la fórmula como

=ISNUMBER(FIND("Critical"), [Title]))

Luego en tu consulta CAML

<Query> <Where> <Eq> <FieldRef Name=''IsCritical''/> <Value Type=''Boolean''>0</Value> </Eq> </Where> </Query>

Un 0 en esta consulta refleja un poco "No es crítico". Sin embargo, no estoy seguro de cuál será el rendimiento en comparación con tener un CAML nativo "No Containts" que lamentablemente no existe.

Consulte también el esquema de consulta CAML en MSDN


TRy no incluye

<NotIncludes> <FieldRef Name=''FileLeafRef'' /> <Value Type=''Text''>stringvalue</Value> </NotIncludes>