私はLINQ to SQLを使用して、SQL Server 2008のFullTextSearchストアドプロシージャの検索結果を取得しています。サーバーエクスプローラからデザイナにプロシージャをドラッグし、適切な戻り値の型とパラメータを使用してメソッドを作成しました。問題は、私はこのメソッドを呼び出す結果のCountを取得する必要があるので、私のリポジトリメソッド(Sprocメソッドを呼び出し、結果をIQueryableとして返す)を使用して、次の呼び出しを行います。クエリ結果は複数回列挙できません。
var result = repository.FullTextSearch(searchText);
int resultsCount = result.Count();
var ret = result.Skip((pageNumber - 1) * PageSize).Take(PageSize).ToList();
このコードは、InvalidOperationExceptionが私はそれを実行しようとするたびに発生し、例外は、「クエリ結果は複数回列挙することはできません。」(ええ、あなたはそれを推測!)と言います
Sprocのために生成されたメソッドは、ISingleResultを返します。これはO.Kでなければなりません。私の知る限り。私はビューでページングをサポートする必要があるので、ページの総数を知る必要があります(AFAIKは再び可能です)。
私はここで何が欠けていますか?
マーク・グラヴェルの推奨リファクタリングは最高ですが、goonaはこれに時間を割いています。私はマークの答えを取る!もう一度みんなありがとう! – Galilyou