我正在使用一个现有的对象框架,该框架使用特殊值来表示基元 int、DateTime、long 的 NULL。包含这些值的数据将添加到 DataTable 并显示在第三方控件(例如 XtraGrid)中。
一切都很好,除非将聚合应用于数据。在这种情况下,显然处理的是特殊值而不是 NULL 条目。
所以我认为最好的解决方案是在放入 DataRow 时将值映射到 DBNull 或从 DBNull 映射。我考虑过对 DataTable 和 DataRow 进行子类化,但基类不允许覆盖访问器。
我可以向子类添加额外的 Get/Set 函数,但这依赖于记住使用它们。我可以添加静态辅助函数而不是子类化,但这有同样的问题。
有没有更优雅的解决方案?
更新 执行聚合的是网格本身,因为它具有灵活的控件,可以让用户在运行时定义摘要。所以我认为唯一真正的解决方案是以某种方式映射到/从 DBNull,只是寻找一种优雅的方式来做到这一点。