2009-03-09 34 views
6

私は多くのレコードを含むことができるデータベーステーブルを持っており、テーブルの現在の合計を数えたいと思います。私は、簡単な操作を行うとしていた。LINQとCount拡張メソッド

DataContext.Table.Count(c => c.condition); 

私はCountの戻り値の型がintで実現するまで。テーブルが32ビットで表されるよりも多くの値を保持する場合はどうでしょうか?どうすればそれらを数えることができますか?

私たちがそのようなスケールについて話しているとき、私はそれらを別の方法で数えますか?

+0

LongCount()拡張メソッドはあなたのソリューションですが、フィルタ結果セットが 'int.MaxValue'で表される数を超えると実行時にメモリ例外が発生します。実際、 'int.MaxValue'の下では失敗し、' long'(SQLのBIGINT)レコードの範囲を忘れるでしょう。 CLRは、オブジェクトの最大許容サイズを2 GBに制限します。それらの多くのレコードを実際にメモリに持ってきた場合は、アプリケーションを再構築することを検討してください。詳細はこちら - http://stackoverflow.com/questions/1087982/single-objects-still-limited-to-2-gb-in-size-in-clr-4-0 – RBT

答えて

10

LongCount()は64ビットの結果と同じものを使用します。

0

私の解決方法は、.LongCount()拡張メソッドを使用することでした。

+0

返信を使って返信しないでください他のポスター。コメントを使用するか、質問を編集します。これはディスカッションフォーラムではありません。 – GEOCHET

+0

返事ではなく、彼自身が答えを見つけて投稿したように聞こえました。 –

+0

@マーク:彼の元の投稿はそれを見つけられなかったことに対する謝罪でした。私はそれを編集しました。 – GEOCHET