ファイルベースの LINQ っていつどこまで読めばいいんだろう。

LINQ の IQueryable と IQueryProvider を見ててちょっと思った。
LINQ to SQLLINQ to Object はクエリを実行するときに式を解析して検索したり、キャッシュからどうにかしたりしているわけだけれど、 LINQ to XML などの ファイルをデータソースにした LINQ はどうしているんだろう。

クエリの段階で頭からシーケンシャルに検索していく?
何回かクエリを発行するとしたらどうしよう。また読み直す??
なんかファイルアクセスがすごいことになりそう。

グループやソートした瞬間にフルアクセスだよなー
一度全部読んでインデックスを作る?
ファイルサイズが大きくて何度かアクセスする場合はいいかな。
一度読んでソートするとかは効率的かも。
でもそうなら MDB や簡易 DB に一度突っ込んじゃう?

全件読んでクエリをかける?
LINQ to Object か?
でもファイルベースのデータソースでも無茶なの多いからな。
数万レコードとか普通にありそう。

うーん。。。