我的代码中有一个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语句。
答案 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循环。