특정 콘텐츠 유형의 하위 폴더에서 모든 파일 가져오기
-
10-12-2019 - |
문제
내 문제는 하위 폴더가 있는 문서 라이브러리가 있다는 것입니다.또한 문서 라이브러리에는 둘 이상의 콘텐츠 형식이 있습니다.
이 하위 폴더 중 하나에서 특정 콘텐츠 유형의 모든 파일을 가져오기 위해 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 쿼리를 통한 문서 라이브러리 폴더 필터링
제휴하지 않습니다 sharepoint.stackexchange