1

我正在寻找一种模仿混合类型数据(行/列)表的高效内存类型。高效是指以下场景的快速操作。记忆是次要问题。

主要场景是:

  • 添加数据行
  • 阅读整列
  • 遍历行

超出范围:

  • 排序/排序
  • 搜索
  • 持久化到数据库
  • 单元格的随机访问(即 table(row=3,col=4) )

我假设我可以比 ADO 类型(DataTable 等)做得更好,因为它们解决了更广泛的场景?我可能是错的。

4

1 回答 1

0

DataTable 功能多,体积大。像 AcceptChanges。

为了处理混合数据类型,创建了一个抽象类

public abstract class Field : INotifyPropertyChanged 

这包括

public abstract String DispValue { get; }

然后对于各种数据类型

class FieldBooleanSV : Field

class FieldStringSV : Field

class FieldInt32SV : Field

public class FieldInt16SV : DocField
{
    Int16 fieldValue;
    Int16 FieldValue { get { return fieldValue; }
        set
        {
                if (value != fieldValue)
                {
                    fieldValue = value;
                    NotifyPropertyChanged("DispValue");
                    NotifyPropertyChanged("FieldValue");
                }
            }
        }
    }
    public override String DispValue 
    { 
        get 
        {  return fieldValue.ToString()); }
    }
}

SV是单值,有一个MV

所以 FieldRow 是一个具有属性的类

List<Field> Fields ....

总集合是(行和列)是

ObservableCollection<FieldRow>

它很脆弱,因为您需要确保每个 FieldRow 具有相同的字段集合。

这是很多工作,但我需要控制 Field。
如果您要走这条路,那么在 DataGrid 上使用 GridView(出于相同的原因 - 电源但开销)。

问题与

List<IEnumerable<T>>

是不是 T 是一个变量,但它是奇异的。所有列都是相同的 T。

于 2013-04-02T16:19:04.817 回答