私はこれに慣れていません。次の状況で何が起こるか興味がありますか?
var q = //MY LINQ TO SQL QUERY.Select(...)
.........
.........
var c = q.Count();
.........
.........
var x = q.Where(....).Select(....);
var y = x.ToList();//or something such that forces materialization
var d = q.Count();//same as c
var e = x.Count();
var f = y.Count();
SQL ステートメントが実際にデータベースに移動した回数は? Count() で 1 回。再び Where()? または、Linq は Count() 中に具体化したものを保持しますか?
または、Where(..) の内容にも依存しますか? データベースを再度参照している場合と、「q」/または他の.netコレクションなどの一部として取得されたものを参照しているだけの場合のように?
編集:
他のいくつかのシナリオでコードを更新しました。以下の私の答えを修正してください:
q -no db trip
c -yes, but translates to aggregate qry - select Count(*) and not a result set (as per answer below)
x -no db trip. No matter what is written in the Where(..)
y - yes
d - yes - does not *reuse* c
e - yes - select count(*) EVEN THOUGH x already materized during y
f - no db trip