В код Open Source Project (OSP), который я вношу, есть несколько мест, где он должен быть определен, если элемент в коллекции удовлетворяет определенному условию.
Я видел использование выражения LINQ Any(lambda expression) в некоторых случаях и FirstOrDefault(lambda expression) != null в других, но никогда не думал об этом.
Теперь я достиг точки, где мне нужно сделать несколько итераций для коллекций, сделанных из запросов, в БД и хочу оптимизировать время выполнения.
Итак, я понял, что FirstOrDefault(lambda expression) != null должен быть быстрее, чем Any(lambda expression), правильно?
В случае FirstOrDefault(lambda expression) != null итерация (возможно) останавливается, когда находит элемент, который удовлетворяет условию (худший сценарий он выполняет итерацию по всей коллекции и возвращает null).
В случае Any(lambda expression) я предполагаю, что итерация продолжается до конца коллекции, даже если найден элемент, который удовлетворяет условию.
Изменить: вышеизложенное неверно, поскольку Джексон Папа упомянул и связал связанную статью MSDN.
Верны ли мои мысли или что-то не хватает?