【发布时间】:2011-03-19 16:22:32
【问题描述】:
给定以下 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 子句。
这是否意味着整个“Imports”表被缓存到内存中? 如果表包含大量记录,这是否会降低性能?
帮助我了解幕后实际发生的事情。
【问题讨论】:
-
看看另一个问题的例子:[在此处输入链接描述][1] [1]:stackoverflow.com/a/14129116/1792434
标签: c# linq linq-to-sql asenumerable