Понимание .AsEnumerable () в LINQ to SQL
Учитывая следующий запрос LINQ to SQL:
var test = from i in Imports
where i.IsActive
select i;
Интерпретируемый оператор SQL:
SELECT [t0].[id] AS [Id] .... FROM [Imports] AS [t0] WHERE [t0].[isActive] = 1
Скажем, я хотел выполнить какое-то действие в select, которое нельзя преобразовать в SQL. Это мое понимание того, что обычный способ сделать это состоит в том, чтобы сделатьAsEnumerable()
таким образом превращая его в работоспособный объект.
Учитывая этот обновленный код:
var test = from i in Imports.AsEnumerable()
where i.IsActive
select new
{
// Make some method call
};
И обновленный SQL:
SELECT [t0].[id] AS [Id] ... FROM [Imports] AS [t0]
Обратите внимание на отсутствие предложения where в выполняемом операторе SQL.
Означает ли это, что вся таблица «Imports» кэшируется в память? Будет ли это вообще замедлять работу, если таблица будет содержать большое количество записей?
Помогите мне понять, что на самом деле происходит за кулисами здесь.