Если я не ошибаюсь, метод ToList() перебирает каждый элемент предоставленной коллекции и добавляет их в новый экземпляр List и возвращает этот экземпляр. Представьте пример
//using linq
list = Students.Where(s => s.Name == "ABC").ToList();
//traditional way
foreach (var student in Students)
{
if (student.Name == "ABC")
list.Add(student);
}
Я думаю, что традиционный способ выполняется быстрее, поскольку он циклически только один раз, где, как и выше Linq, повторяется дважды один раз для метода Where, а затем для метода ToList().
Проект, над которым я сейчас работаю, широко использует списки по всему миру, и я вижу, что есть много такого использования ToList() и других методов, которые могут быть сделаны лучше, чем выше, если я возьму list как IEnumerable и удалить .ToList() и использовать его далее как IEnumerable.
Помогают ли эти вещи влиять на производительность?