2010-05-27 5 views

답변

1

직접 하위를 찾고 자손 (예 : 하위 폴더 내의 항목)을 찾고 있다고 가정합니다.

카운트에 하위 폴더도 포함 하시겠습니까? 어떤 경우에는 SPFolder.ItemCount을 사용할 수 있습니다. 나는 그것을 시도하지 않은

using (SPSite site = new SPSite(mySPSite)) 
{ 
    SPWeb web = site.OpenWeb(); 
    SPList list = web.Lists[myList]; 
    SPFolder folderInstance = list.RootFolder.SubFolders[folderUrl]; 

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

    SPListItemCollection items = list.GetItems(query) ; 

    Console.WriteLine(items.Count); 
} 

:

그냥 하위 폴더가 아닌 경우에만 직접 자녀의 많은 ListItems를 원하는 경우에

는 다음과 같은 작업을 수행 할 수 있습니다. 질의가 반환하는 경우 폴더를 제거하기 위해 where 절을 추가해야 할 수도 있습니다.

하위 폴더 내에서도 모든 목록 항목을 포함하려면 SPQuery.ViewAttributes 필드를 query.ViewAttributes = "Scope=\"Recursive\""으로 설정하십시오. SPList.ItemCount 속성을 사용

+0

예, 하위 폴더가없는 항목 수가 필요합니다. 쿼리를 실행하지 않고이 작업을 수행 할 수 있습니까? – Vijay

+0

잘 모름. SPFolder.Item.ListItems에는 운이 좋을지도 모릅니다. –

+0

Nope. SPFolder.Items.ListItems가 도움이되지 않았습니다. 내가 찾던 것을 찾지 못해서 당신의 솔루션을 사용했습니다 :) 감사합니다! – Vijay

0

From Microsoft

는 목록의 항목 번호를 검색하기 위해 권장되는 방법 입니다. 그러나 성능에 대해이 속성을 튜닝 한 결과 은 종종 예기치 않은 결과를 반환 할 수 있습니다. 당신이 항목의 정확한 수를 필요로하는 경우 예를 들어, 사용 ...

나는 동일 SPFolder.ItemCount 적용 궁금합니다?

+0

SPFolder에는 ItemCount 속성이 정의되어 있지 않습니다! – Vijay

1

SPFolder에서 SPListItem을 가져 와서 SPBuiltInFieldId.ItemChildCount 및 SPBuiltInFieldId.FolderChildCount 필드에서 값을 확인하려고 했습니까? 이 같은

뭔가 :

SPFolder folder = ...; 
int? noOfItems = folder.Item[SPBuiltInFieldId.ItemChildCount] as int?; 
int? noOfFolders = folder.Item[SPBuiltInFieldId.FolderChildCount] as int?; 

더 많은 정보를 원하시면

SPBuiltInFieldId.ItemChildCount Field

SPBuiltInFieldId.FolderChildCount Field

를 참조하십시오.

관련 문제