私は多くのレコードを含むことができるデータベーステーブルを持っており、テーブルの現在の合計を数えたいと思います。私は、簡単な操作を行うとしていた。LINQとCount拡張メソッド
DataContext.Table.Count(c => c.condition);
私はCount
の戻り値の型がint
で実現するまで。テーブルが32ビットで表されるよりも多くの値を保持する場合はどうでしょうか?どうすればそれらを数えることができますか?
私たちがそのようなスケールについて話しているとき、私はそれらを別の方法で数えますか?
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