Что оптимальнее - LINQ или циклы

При работе с коллекциями довольно часто возникает необходимость выбрать элементы по некоторым признакам или по считать какое-то на выражение на основе некоторых элементов. Я всё время данные задачи решал с помощью циклов (обычно for или foreach). Сравнительно недавно я начал пользоваться решарпером и от последнего стали поступать предложения заменить некоторые мои такие циклы на linq to objects выражения. После такой замены код выглядит красивее, но насколько это оптимально?!

Я провёл небольшой тест: из List, заполненного случайными числами, выбираются все чётные и помещаются в новый List.

Вот код (numbList - исходный List):

C#Выделить код

1
2
3
4
5
6
7
8

var resultList = new List();
foreach (var number in numbList)
{
    if (number % 2 == 0)
    {
        resultList.Add(number);
    }
}

C#Выделить код

| | |
| --- | --- |
| 1 | var resultList = numberList.Where(number => number % 2 == 0).ToList(); |

В среднем получается, что код с циклом работает раза в 1.5 быстрее.

Я понимаю, что мой тест немного примитивен, но всё же...

А теперь собственно вопрос: стоит ли вообще использовать linq to objects в задачах, которые можно решить циклами и если стоит, то в каких случаях.

P.S. кроме практических рекомендаций хотелось бы услышать ещё и теоретические обоснования