문제

내 문제는 하위 폴더가 있는 문서 라이브러리가 있다는 것입니다.또한 문서 라이브러리에는 둘 이상의 콘텐츠 형식이 있습니다.

이 하위 폴더 중 하나에서 특정 콘텐츠 유형의 모든 파일을 가져오기 위해 CAML 또는 LINQ 쿼리를 만드는 방법이 있습니까?

하위 폴더 이름이 알려져 있습니다.

미리 감사드립니다!

도움이 되었습니까?

해결책

SPQuery의 경우 다음을 사용하세요. SPQuery.폴더 폴더를 정의하려면:

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

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

그런 다음 콘텐츠 유형을 정의하려면 Where 절에 다음 조건을 포함해야 합니다.

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

그런 다음 "Folder 1"의 모든 하위 폴더를 포함하려면 다음을 지정해야 합니다. Scope="Recursive" 쿼리 ViewAttributes에서:

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

추신Client Object Model과 CamlQuery를 사용하는 경우 구문이 약간 다릅니다.즉.대신에 Folder, 필요할 것이예요 폴더서버상대 URL:

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

또한 재귀 범위는 View 요소의 속성으로 정의되며, 이 경우 쿼리에 포함되어야 합니다.

다른 팁

이와 같이 보이는 CAML 쿼리를 만들 수 있습니다 (저는 무관 한 부분을 탈퇴했습니다) :

<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> 
.

지정된 하위 폴더에서 지정된 내용 유형의 모든 문서를 반환합니다.

여기에 유용 할 수있는 몇 가지 링크가 있습니다. 폴더 캠 /a> 아래 항목 가져 오기 Caml 쿼리를 통한 문서 라이브러리 폴더 필터링

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top