Rimuovi elemento da ArrayList nel ciclo foreach e ottieni l'eccezione follwing.Eccezione durante l'iterazione alla raccolta e rimozione di elementi da quella raccolta
Raccolta modificata; l'operazione di enumerazione potrebbe non essere eseguita.
Come posso rimuovere elementi in foreach,
EDIT:Ci potrebbe essere un elemento da rimuovere o due o tutti.
seguito è il mio codice:
/*
* Need to remove all items from 'attachementsFielPath' which does not exist in names array.
*/
try
{
string attachmentFileNames = txtAttachment.Text.Trim(); // Textbox having file names.
string[] names = attachmentFileNames.Split(new char[] { ';' });
int index = 0;
// attachmentsFilePath is ArrayList holding full path of fiels user selected at any time.
foreach (var fullFilePath in attachmentsFilePath)
{
bool isNeedToRemove = true;
// Extract filename from full path.
string fileName = fullFilePath.ToString().Substring(fullFilePath.ToString().LastIndexOf('\\') + 1);
for (int i = 0; i < names.Length; i++)
{
// If filename found in array then no need to check remaining items.
if (fileName.Equals(names[i].Trim()))
{
isNeedToRemove = false;
break;
}
}
// If file not found in names array, remove it.
if (isNeedToRemove)
{
attachmentsFilePath.RemoveAt(index);
isNeedToRemove = true;
}
index++;
}
}
catch (Exception ex)
{
throw ex;
}
EDIT: si può anche consigli sul codice. Ho bisogno di rompere in piccoli metodi e gestione delle eccezioni, ecc
eccezione Invalid argument Sulla creazione elenco generico da ArrayList
foreach (var fullFilePath in new List<string>(attachmentsFilePath))
{
alt text http://img641.imageshack.us/img641/1628/invalidargument1.png
Quando uso il List<ArrayList>
l'eccezione è Argomento '1': impossibile convertire da 'System.Collections.ArrayList' a 'int'
attachmentsFilePath è dichiarato come questo
ArrayList attachmentsFilePath = new ArrayList();
Ma quando ho dichiarato in questo modo, problema risolto
List<ArrayList> attachmentsFilePath = new List<ArrayList>();
+1, anche se 'ArrayList' dovrebbe essere sostituito con un' Elenco 'digitato correttamente. –
Ho creato una nuova lista (attachementsFilePath) e mi dà un'eccezione arguemnt non valida. Ho allegato iamge nell'area delle domande. –
Kashif