2017-01-04 3 views
-3

Ich habe die unten for SchleifeC# for-Schleife Überspringen letztes Element

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 
    }  
} 

In dieser for Schleife ich durch die Elemente in itemcollection und Löschen von einigen von ihnen bin iterieren. dh Einzelteil wird von itemcollection Array entfernt werden und so itemcollection.count um 1

reduziert werden Dies ist das dritte Element jedes Mal, nicht zu löschen, wenn ich 3 Artikel haben

löschen Ich bin nicht sicher, in welchem ​​Zustand verwendet werden soll um es richtig zu machen

+0

Probieren Sie 'for (int i = ListeCount-1; i> = 0; i-)' – Enigmativity

+1

Dieser Code wird nicht kompiliert ('foreach' funktioniert nur bei aufzählbaren Elementen). Ist das dein genauer Code? –

+0

foreach-Syntax selbst ist falsch – Prabu

Antwort

2

Sie sollten in umgekehrter Reihenfolge wie folgt gehen und for anstelle von foreach wie unten verwenden.

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

Sie können etwas tun:

_itemCollection.RemoveAll(item => item['expirydate'] > today); 

Das alle Elemente entfernt, die den gegebenen Zustand entspricht.

Um Artikel von SPListItemCollection Scheck dieses documentation

+1

SharePoint 'SPListItemCollection' hat nicht solche' RemoveAll' Methode! –

0

Versuchen Sie, diese zu entfernen:

int listCount = _itemCollection.Count; 
    for (int i = 0; i < listCount; i++) 
    { 
     var item = _itemCollection[i]; 
     if(item [expirydate] > today) 
     { 
      _itemCollection.Remove(item); 
      listCount--; 
     } 
    } 

Diese Ihr wünschen erfüllen kann. Hier können Sie _itemCollection [i] direkt anstelle von item verwenden. Ich hoffe, das kann Ihnen helfen. Viel Spaß beim Programmieren.

+0

Es gibt keine Funktion namens Remove in SPListItemCollection. @vignesh upvote nicht alles. – Prabu

+0

Vielen Dank! Prabu, um darauf hinzuweisen. Ich habe den Code vor dem Posten überprüft und es funktioniert gut. Aber ich hatte List nicht die SPListItemCollection verwendet. Entschuldige mich für den Fehler. Danke nochmal. – Amrendra

+0

Allerdings enthält SPListItemCollection eine Funktion namens RemoveAll? Ich bin nicht sicher. Bitte erläutern Sie, wenn möglich. – Amrendra