私は、特殊な値を使用してプリミティブ int、DateTime、long の NULL を表す既存のオブジェクト フレームワークを使用しています。これらの値を含むデータは DataTable に追加され、XtraGrid などのサードパーティ コントロールに表示されます。
集計がデータに適用される場合を除いて、すべて問題ありません。この場合、明らかに NULL エントリの代わりに特別な値が処理されます。
したがって、最善の解決策は、DataRow に入れるときに DBNull との間で値をマップすることだと思います。DataTable と DataRow をサブクラス化することを考えましたが、基本クラスではアクセサーをオーバーライドできません。
サブクラスに追加の Get/Set 関数を追加することもできますが、これはそれらを使用することを覚えておく必要があります。サブクラス化の代わりに静的ヘルパー関数を追加することもできますが、これには同じ問題があります。
よりエレガントなソリューションはありますか?
更新 ユーザーが実行時に集計を定義できる柔軟なコントロールがあるため、集計を行うのはグリッド自体です。したがって、唯一の本当の解決策は、DBNull との間で何らかの方法でマップすることであり、これを行うためのエレガントな方法を探しているだけだと思います。