给定以下 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]
请注意在执行的 SQL 语句中缺少 where 子句。
这是否意味着整个“导入”表被缓存到内存中?如果表包含大量记录,这是否会降低性能?
帮助我了解这里幕后实际发生的事情。