@LemanRass21

Почему аналогичная реализация через LINQ запрос не работает?

Здравствуйте.
Я похоже чего-то не понял про Predicate но я реально не догоняю почему вот этот код работает:
for (int i = 0; i < Beads.Count; i++)
            if (Vector3.Distance(Beads[i].position, pos) < 0.1f)
                return false;
        return true;


а этот, для меня кажущийся аналогичным - нет:
return Beads.Any(n => Vector3.Distance(n.position, pos) < 0.1f);


Буду безгранично благодарен за объяснения.
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
// Аналогично циклу с использованием Any
return !Beads.Any(n => Vector3.Distance(n.position, pos) < 0.1f);
// Можно с использованием All
return Beads.All(n => !Vector3.Distance(n.position, pos) < 0.1f);


В первом цикле возвращается false, если условие будет выполнено хотя бы раз. Any в этом случае вернёт true. Поэтому нужно применить инверсию. Также можно переписать операцию использую метод All.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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