Linq2Sql でデータテーブルのデータを準備しています
このコードは、「IEnumerable の可能な複数列挙」として強調表示されます (Resharper 内)。
// filtered is an IEnumerable or an IQueryable
var total = filtered.Count();
var displayed = filtered
.Skip(param.iDisplayStart)
.Take(param.iDisplayLength).ToList();
そして、Resharper が正しいと 100% 確信しています。
警告を回避するためにこれを書き直すにはどうすればよいですか
明確にするために、フィルターの最後にToListを配置して、データベースに対して1つのクエリのみを実行できることがわかりました。
var filteredAndRun = filtered.ToList();
var total = filteredAndRun.Count();
var displayed = filteredAndRun
.Skip(param.iDisplayStart)
.Take(param.iDisplayLength).ToList();
しかし、これにより、ネットワーク経由で転送したいよりも多くのデータが返されます。
ケーキを持って食べられないことを期待しています。:(