Как я могу написать Take (1) в синтаксисе запроса

Можно ли написать IQueryable<MyObject> = query.Take(1) или что-то подобное в синтаксисе запроса LINQ. Я использую С# 5 и EF 5.

Ответы

Ответ 1

В синтаксисе выражения запроса для LINQ в С# нет эквивалента Take. Единственными методами, которые имеют эквиваленты выражения запроса, являются

Where,
Select,
SelectMany,
Join,
GroupJoin,
OrderBy,
OrderByDescending,
ThenBy,
ThenByDescending,
GroupBy,
Cast

Это из §7.16.2 спецификации.

Ответ 2

Нет. Вы должны использовать синтаксис точки для этой операции. То же самое касается ToList, Count и т.д.

var query =
    (from item in list
     where predicate(item)
     select func(item))
    .Take(10);