Подтвердить что ты не робот

Синтаксис запроса .NET LINQ и цепочка методов

Есть ли разница в производительности между двумя следующими утверждениями?

from item in collection 
where item.id == 3
select item

и

collection.Where(item => item.id ==3)

В общем, есть ли разница в производительности между синтаксисом LINQ и цепочкой методов?

4b9b3361

Ответ 1

Нет, потому что они скомпилированы в точно такой же код.

В основном выражения запроса "предварительно обработаны" компилятором в "С# 3 без выражений запроса", а затем правила перегрузки, преобразования лямбда-выражения и т.д. применяются как обычно. Это действительно элегантная система, которая означает, что правила для выражений запросов ограничены только одним небольшим количеством спецификации.

Конечно, есть разные вещи, которые вы можете написать в синтаксисе "цепной метод", который не может быть написан в синтаксисе выражений запроса, либо из-за использования других перегрузок, либо методов, которые просто не поддерживаются (например, Count()) - но если вы их не используете, скомпилированный код будет точно таким же. Выберите наиболее читаемую альтернативу для любого конкретного сценария.