Как удалить элемент из списка, не используя команду "содержит"?


У меня есть такой код:

for (int i = listboxWork.Items.Count-1; i > -1; i--) 
{
    if (listboxWork.Items[i].Contains(tblSent))
    {
        listboxWork.Items.RemoveAt(i);
    }
}

...который я вывел из здесь , но моя скрипучая старая версия .NET (или, может быть, это моя жалкая версия .NET (Compact Framework), в которой проблема) не содержит "содержит".

Я думаю, что мог бы заменить эту строку:

if (listboxWork.Items[i].ToString().IndexOf(tblSent) > -1)

...но я не слишком уверен, что это лучший способ сделать это. Есть ли более приемлемый способ?

1 2

1 ответ:

Items это набор объектов, поэтому вам нужно преобразовать элемент, с которым вы работаете, в строку, прежде чем вы сможете использовать Contains:

if (listboxWork.Items[i].ToString().Contains(tblSent))

Edit: поскольку это CompactFramework (который я не смог распознать в посте изначально, правильное решение-использовать String.IndexOf, который уже был идентифицирован.

Это вполне приемлемый механизм, но если CF поддерживает его, я настоятельно рекомендую использовать сравнение без учета регистра, особенно если есть какой-либо пользователь входные данные, участвующие в оценке:

if (x.Items[0].ToString().ToLower().IndexOf(tblSent.ToLower()) != -1)