我正在寻找一种模仿混合类型数据(行/列)表的高效内存类型。高效是指以下场景的快速操作。记忆是次要问题。
主要场景是:
- 添加数据行
- 阅读整列
- 遍历行
超出范围:
- 排序/排序
- 搜索
- 持久化到数据库
- 单元格的随机访问(即 table(row=3,col=4) )
我假设我可以比 ADO 类型(DataTable 等)做得更好,因为它们解决了更广泛的场景?我可能是错的。
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。