次の 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 句がないことに注意してください。
これは、「インポート」テーブル全体がメモリにキャッシュされるということですか? テーブルに大量のレコードが含まれていると、パフォーマンスがまったく低下しますか?
ここで舞台裏で実際に何が起こっているのかを理解するのを手伝ってください。