Pregunta

mi problema es que tengo una biblioteca de documentos con subcarpetas.Además, la biblioteca de documentos obtuvo más de un tipo de contenido.

¿Existe alguna manera de crear una consulta CAML o LINQ para obtener todos los archivos de un determinado tipo de contenido de una de estas subcarpetas?

Se conoce el nombre de la subcarpeta.

¡Gracias de antemano!

¿Fue útil?

Solución

Para SPQuery, utilice SPQuery.Carpeta para definir la carpeta:

SPFolder folder = list.RootFolder.SubFolders["Folder 1"];

SPQuery query = new SPQuery();
query.Folder = folder;

Luego, para definir el tipo de contenido, debes incluir la siguiente condición en tu cláusula Where:

SPContentType contentType = list.ContentTypes["MyContentType"];
query.Query = "<Where><Eq><FieldRef Name='ContentTypeId' /><Value Type='Text'>" + contentType.Id + "</Value></Eq></Where>";

Luego, para incluir todas las subcarpetas de la "Carpeta 1", debe especificar Scope="Recursive" en la consulta VerAtributos:

query.ViewAttributes = "Scope=\"Recursive\"";

PDEn caso de que esté utilizando Client Object Model y CamlQuery, la sintaxis será un poco diferente.Es decir.en lugar de Folder, necesitará URL relativa del servidor de carpetas:

query.FolderServerRelativeUrl = "/Shared Documents/Folder 1";

Y también el alcance recursivo se define como atributo del elemento Ver, que en este caso debería incluirse en la consulta.

Otros consejos

Puede crear una consulta de Caml que se vea algo así (he cometido las partes no relacionadas):

<View>
..........
    <QueryOptions>
        <ViewAttributes Scope='Recursive' />
    </QueryOptions>
    <Query>
      <Where>
          <And>
              <Eq>
                  <FieldRef Name="ContentType"></FieldRef>
                  <Value Type="Text">$Resources:ResourceFileName,ContentTypeName</Value>
              </Eq>
              <Eq>
                  <FieldRef Name="FileDirRef"></FieldRef>
                  <Value Type="Text">Server Relative URL of the Folder</Value>
              </Eq>
          </And>
      </Where>
    </Query>
..........
</View> 

Esto devolverá todos los documentos del tipo de contenido especificado en la subcarpadora especificada.

Aquí hay algunos enlaces que pueden ser útiles: Obtenga artículos en Carpeta Caml y Carpeta de la biblioteca de documentos del filtro a través de la consulta de CAML

Licenciado bajo: CC-BY-SA con atribución
scroll top