Что самым легким путем является к foreach через Список <T> удаление нежелательных объектов?

Разве использование не является обратной функцией в Вашем виде языка обмана немного? Я имею в виду, смотрение на решение Ruby дает как

def p(a)a==a.reverse end

, Вы могли легко переписать это как

def p(a)a==a.r end

и просто сказать создание дополнительного метода в коде так, чтобы "r" назвал реверс. Я хотел бы видеть, что люди отправляют решения, которые не содержат вызовы к другим функциям. Конечно, функция длины строки должна быть разрешена.

Ruby без реверса - 41 символа

def m(a)a==a.split('').inject{|r,l|l+r}end

VB.Net - 173 Символа

Function P(ByVal S As String) As Boolean
    For i As Integer = 0 To S.Length - 1
        If S(i) <> S(S.Length - i - 1) Then
            Return False
        End If
    Next
    Return True
End Function
8
задан Mehrdad Afshari 18 July 2009 в 09:36
поделиться

3 ответа

_collection.RemoveAll(user => !user.IsApproved());

Если вы все еще в версии 2.0:

_collection.RemoveAll(delegate(User u) { return !u.IsApproved(); });

Кстати, если вы не хотите трогать исходный список, вы можете получить другой список одобренных пользователей с:

_collection.FindAll(user => user.IsApproved());
54
ответ дан 3 November 2019 в 12:09
поделиться

Вы всегда можете начать с верхнего индекса и продолжить движение вниз к 0:

for (int i = _collection.Count - 1; i >= 0; i--)
{
    User user = _collection[i];
    if (!user.IsApproved())
    {
        _collection.RemoveAt(i);
    }
}

Ответ Мердада выглядит чертовски элегантно.

4
ответ дан 3 November 2019 в 12:09
поделиться

Всякий раз, когда есть шанс, что коллекция будет изменена в цикле, выберите вместо этого цикл для . Решение, данное Мердадом, прекрасное, и его определенно стоит попробовать!

Вот код, который я считаю полезным при работе с изменяемыми коллекциями:

for(int index=0;index < _collection.Count; index++)
{
    if (!_collection[index].IsApproved)
    {
        _collection.RemoveAt(index);
        index--;
    }
}
0
ответ дан 3 November 2019 в 12:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: