我有以下for
循环
int listCount = _itemCollection.Count;
//_itemCollection is of type SPListItemCollection
for (int i=0;i<listCount;i++)
{
var item = _itemCollection[i]; // just to prevent changes in all places inside the for loop
if(item['expirydate']>today){
item.delete();
listCount--; //as I am removing 1 item, I am decrementing count
}
}
在这个for
循环中,我正在遍历itemcollection
中的项目并删除其中的一些项目。即项目将从itemcollection
数组中移除,因此itemcollection.count
将减少1
每次删除第3项时,我有3项要删除
我不确定应该使用什么条件才能正确
答案 0 :(得分:2)
您应该按照以下相反的顺序进行操作,并使用for
代替foreach
,如下所示。
int listCount = _itemCollection.Count;
for (int i = listCount - 1; i >= 0; i--)
{
var item = _itemCollection[i]; // just to prevent changes in all places inside the for loop
if(item['expirydate'] > today){
item.delete();
}
}
答案 1 :(得分:1)
您可以这样做:
_itemCollection.RemoveAll(item => item['expirydate'] > today);
这将删除与给定条件匹配的所有项目。
要从SPListItemCollection中删除项目,请检查此documentation
答案 2 :(得分:0)
试试这个:
int listCount = _itemCollection.Count;
for (int i = 0; i < listCount; i++)
{
var item = _itemCollection[i];
if(item [expirydate] > today)
{
_itemCollection.Remove(item);
listCount--;
}
}
这可能满足您的需求。在这里你可以直接使用_itemCollection [i]而不是item。 我希望这可以帮到你。享受编码。