我的代码中有一个caml查询来返回SharePoint列表的某些项目。我添加了 IF 语句,以防查询找不到任何匹配项或返回 NULL。
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();
}
}
如果在列表中找不到部门,则不会转到 ELSE 语句。
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
}
我解决了。查询将仅返回您输入的部门。因此,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();
}
}
}
使用项目计数来了解是否有任何项目首先由你选择。如果你有计数,那么使用你的for-each to loop。