Есть ли разница в производительности между этими двумя подходами?
// First approach, iterating until a match
public bool Find(IEnumerable<Object> allObjects, Object testObj)
{
foreach (Object obj in allObjects)
{
if (obj.Equals(testObj))
{ return true; }
}
return false;
}
// Second approach, using LINQ and Any()
public bool Find(IEnumerable<Object> allObjects, Object testObj)
{
var query = from Object obj in allObjects where obj.Equals(testObj) select obj;
return query.Any();
}
Мой вопрос: сравнивает ли версия LINQ testObj с всеми объектами в коллекции, а затем метод Any () проверяет, является ли результирующая коллекция пустой. Как правило, это будет менее эффективно, чем в первом случае, когда итерация останавливается после первого совпадения.