Я выполнил следующий запрос:
var list = from book in books
where book.price > 50
select book;
list = list.Take(50);
Я бы ожидал, что приведенное выше сгенерирует что-то вроде:
SELECT top 50 id, title, price, author
FROM Books
WHERE price > 50
но он генерирует:
SELECT
[Limit1].[C1] as [C1]
[Limit1].[id] as [Id],
[Limit1].[title] as [title],
[Limit1].[price] as [price],
[Limit1].[author]
FROM (SELECT TOP (50)
[Extent1].[id] as as [Id],
[Extent1].[title] as [title],
[Extent1].[price] as [price],
[Extent1].[author] as [author]
FROM Books as [Extent1]
WHERE [Extent1].[price] > 50
) AS [Limit1]
Почему вышеупомянутый запрос linq создает подзапрос и откуда приходит C1?