caml查询如何返回null?

时间:2012-10-11 12:57:44

标签: c# visual-studio-2010 sharepoint-2010 caml

我的代码中有一个caml查询返回一些SharePoint列表项。如果查询找不到任何匹配项或返回NULL,我添加了IF语句。

                   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语句。

3 个答案:

答案 0 :(得分: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
        }

答案 1 :(得分: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(); 
                                }
                            }
                        }

答案 2 :(得分:0)

使用项目计数来了解您是否有任何首先选择的项目。如果你有计数,那就用你的for-each循环。