2011-05-02 3 views
2

Hello Sharepoint 개발자!SPQuery : 목록에 가입하고 외국리스트에있는 곳

where 절을 배치하는 데 필요한 목록과 두 목록 모두에서 조인을 시도한 적이 있습니까? 첫 번째 목록에서 할 수 있지만 외부 목록에 위치를 배치하는 방법을 찾을 수 없습니다.

using (SPWeb web = sps.OpenWeb()) 
      { 
       SPList spl = web.GetList(customers); 
       SPQuery query = new SPQuery(); 
       query.Query = "<Where><Eq><FieldRef Name='Suspended'/><Value Type='Boolean'>0</Value></Eq></Where>"; 
       [email protected]"<Join Type='Inner' ListAlias='CountryList'><And><Eq><FieldRef Name='Country' RefType='Id'/><FieldRef List='CountryList' Name='ID'/></Eq><Eq><FieldRef List='CountryList' Name='Continent' /><Value Type='Text'>Europe</Value></Eq> 
         </And></Join>"; 
       .... 

하지만이 작동하지 않습니다 :

나는 이와 같은 몇 가지 솔루션을 시도했다. 유럽에있는 모든 도시 (다른 목록)에서 오는 일시 중지 된 고객을 얻고 싶습니다. 따라서 기본 목록 (spl)에서 고객을 일시 중지하지 않고 유럽 국가에서만 지역을 가져올 수있는 위치가 필요합니다. Join 요소에 내 where를 배치 할 수 없습니다. 목록에 별칭을 지정하여 쿼리에 넣으려고했으나 작동하지 않습니다.

아이디어가 있으십니까? 덕분에 !

답변

0

부울 값을 텍스트로 변환하는 계산 된 열을 사용하십시오.

2

나는 내 대답을 발견 좋아 :.

당신은 추가 할 수도 외국 목록에 절을하지만, 대상 필드가 부울 할 수없는 경우 :(이 지원되기 때문에 A 형 (ProjectedFields) 사실 경우 특정 필드에서 외부 목록을 필터링하려는 경우 투영 된 필드 요소에서이를 선언하여 SPQuery의 Query 속성에서 where 절로 인식되도록 할 수 있습니다.

예를 들어,

SPList spl = web.GetList(customers); 
      SPQuery query = new SPQuery(); 
      query.Query = @"<Where><And> 
<Eq><FieldRef Name='Suspended'/><Value Type='Boolean'>0</Value></Eq> 
<Eq><FieldRef Name='ContinentCountryList' List="CountryList"/><Value Type='Text'>Europe</Value></Eq> 
</And></Where>"; 
       [email protected]"<Join Type='Inner' ListAlias='CountryList'><Eq><FieldRef Name='Country' RefType='Id'/><FieldRef List='CountryList' Name='ID'/></Eq> 
        </Join>"; 
    query.ProjectedFields = "<Field Name='ContinentCountryList' Type='Lookup' List='CountryList' ShowField='Continent'/> 

이제 작동 중입니다. 유럽 지역의 고객 만 일시 중지됩니다. 그래서 필자는 projection 필드 엘리먼트에서 외부 필드를 참조해야한다. 그러나 그것은 단지 ...은 MSDN 링크 위에 나열된 유형 일하고

나를 위해 너무 나쁜

그것은이었다 부울, 나는 ... 당신이 어떤 다른 제안이 없다면 내가 메모리에 일시적으로 목록을 처리해야 추측