2012-10-11 38 views
0

我在我的代碼中有一個caml查詢返回一些SharePoint列表項。如果查詢未找到任何匹配的項目或返回NULL,我添加了IF語句。如何caml查詢返回空

    SPListItemCollection Items = RiskAssesment.GetItems(new SPQuery() 
        { 
         Query = @"<Where> 
            <Eq> 
            <FieldRef Name='Department'/> 
            <Value Type='Text'>"+Department+"</Value> 
            </Eq> 
           </Where>" 
        }); 

        foreach (SPListItem item in Items) 
        { 
         if (item != null) 
         { 
          item["Name"]="abcd"; 
          item.Update(); 
         } 
         else 
         { 
          newListItem["Name"] = "xyz"; 
          newListItem.Update(); 
         } 
        } 

如果在列表中沒有找到Department,則不會進入ELSE語句。

+0

如果你的splistitemcollection = NULL,for循環會失敗。試一試,繞過它我認爲你也許會得到一個錯誤 – Truezplaya

回答

0

我解決了它。該查詢將只返回您輸入的部門。因此,foreach語句只會包含該部門中的項目。所以我沒有找到其他不匹配的項目。它是這樣的:

     SPListItemCollection Items = RiskAssesment.GetItems(new SPQuery() 
         { 
          Query = @"<Where> 
             <Eq> 
              <FieldRef Name='Department'/> 
              <Value Type='Text'>" + Department + "</Value></Eq></Where>" 
         }); 

         if (Items.Count==0) 
         { 
          item["Name"]="abcd"; 
          item.Update(); 
         } 
         else 
         { 
          foreach (SPListItem item in Items) 
          { 
           if (item != null) 
           { 
            item["Name"]="abcd"; 
          item.Update(); 
           } 
          } 
         } 
0
  try{ 
    SPListItemCollection Items = RiskAssesment.GetItems(new SPQuery() 
         { 
          Query = @"<Where> 
              <Eq> 
               <FieldRef Name='Department'/> 
               <Value Type='Text'>"+Department+"</Value>       </Eq></Where>" 
         }); 
         if(Items != null){ 
         foreach (SPListItem item in Items) 
         { 
          if (item != null) 
          { 
           item["Name"]="abcd"; 
           item.Update(); 
          } 
          else 
          { 
           newListItem["Name"] = "xyz"; 
           newListItem.Update(); 
          } 
         } 

        } 

     } 
     Catch(Exception exc){ 
     //Do something with your exception here 
     } 
+0

我試過了,但代碼中沒有例外 – Rizwan

+0

你想做什麼?對我來說,我不確定你爲什麼要檢查for循環中的item是否爲null,因爲如果它在splistitemcollection中,我認爲它應該總是有些東西。也許你的意思是檢查標題是否爲空。如果(item!= null)可能應該是if(string.isNullOrEmpty(item [Title] .ToString()) – Truezplaya

+0

if(string.isNullOrEmpty(item [SPBuiltInField.Title] .ToString()) – Truezplaya

0

使用項目計數來知道是否有任何項目與您的選擇第一次。如果你有數,然後使用for-each來循環。