Задать вопрос
@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);


Буду безгранично благодарен за объяснения.
  • Вопрос задан
  • 114 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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