Вопрос

Есть ли способ удалить элемент из списка на основе строки?

Я играл несколько минут, и вот что у меня есть, но это не работает

foreach(string file in LB_upload.Items)
{
    ftp.Upload(file);
    int x = LB_upload.Items.IndexOf(file);
    LB_upload.Items.RemoveAt(x);
}

Я мог бы просто пройтись по каждому пункту, но я хотел сделать что-то более элегантное

Это было полезно?

Решение

while(LB_upload.Items.Count > 0)
{
  ftp.Upload(LB_upload.Items[0].ToString());
  LB_upload.Items.RemoveAt(0);
}

Другие советы

Исходя из вашего примера, я бы сделал что-то вроде;


foreach(string file in LB_upload.Items)
{
  ftp.Upload(file);
}
LB_upload.Items.Clear();

Проблема, с которой вы, вероятно, сталкиваетесь, заключается в том, что вы изменяете список, повторяя его. Это большое нет-нет, и на этом сайте была рассмотрена тошнота.

Судя по названию вашего вопроса, звучит так, будто вы не хотите удалять все элементы, только некоторые из них. Если это так:

for (int i = LB_upload.Items.Count - 1; i >= 0; i--)
{
    if (somecondition)
    {
        ftp.Upload(LB_upload.Items[i]);
        LB_upload.Items.RemoveAt(i);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top