Как реализовать First и FirstOrDefault для boolinq?

Это здесь boolinq — Реализация LINQ C ++ с открытым исходным кодом, совместимая с vs2010. Мне нравится его синтаксис — он выглядит как можно ближе к C # (из краткого обзора во всех других реализациях VS2010 LINQ C ++). Тем не менее, в нем действительно отсутствуют некоторые базовые функции LINQ. Интересно, как можно реализовать .First(lambda expression) или же .FirstOrDefault(lambda expression) поддержка в этом?

2

Решение

Так как векторы с ++ имеют front() и empty() метод, вам просто нужно сделать следующее:

  • для .First(lambda)нужно просто проверить .Where(lambda).ToVector().empty(), Если это правда, выбросить исключение, иначе вернуть .Where(lambda).ToVector().front()

  • для .FirstOrDefault(lambda)нужно просто проверить .Where(lambda).ToVector().empty(), Если это правда, вернуть значение по умолчанию, в противном случае вернуть .Where(lambda).ToVector().front()

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]