如何在c#中表示具有可变列数的通用数据类型的表格数据
本文关键字:数据 表格 数据类型 表示 | 更新日期: 2023-09-27 17:54:12
我有以下c#解决方案,使用泛型来表示每列具有不同数据类型的表格数据。最终目标是比较任意两个表的数据点,这就是为什么列有一个约束,它们实现了icomcomparable。我的困难在于扩展它,以便它可以支持用户希望的任意数量的列:
class TableObject<RowHeaderType, Column1Type, Column2Type>
where Column1Type : IComparable
where Column2Type : IComparable
{
List<string> columnHeaders;
Dictionary<RowHeaderType, Dictionary<string, IComparable>> tableDict;
Dictionary<string, IComparable> rowDict;
public TableObject(List<string> _columnHeaders)
{
tableDict = new Dictionary<RowHeaderType, Dictionary<string, IComparable>>();
columnHeaders = _columnHeaders;
}
public void addRow(RowHeaderType rowHeader, Column1Type colvalue_1, Column2Type colvalue_2)
{
// rowDict represents one row, with each key/value representing a column of data
rowDict = new Dictionary<string, IComparable>();
rowDict.Add(columnHeaders[1], colvalue_1); // [0] was the row header table
rowDict.Add(columnHeaders[2], colvalue_2);
// add this new row to the master table
tableDict.Add(rowHeader, rowDict);
}
}
在构造函数中,我传入一个List,它是列标签。然后,我将调用addRows,它将接受(理想情况下)一个rowHeaderType值,以及一个数组,该数组将表示组成整个行的值,每个值对应于定义的columnType。
我的目标是使它尽可能通用。这里唯一的限制是列名是字符串,因为我最终希望在datagridview中显示它。
如果你觉得有更好的替代设计,也请随时提出建议。谢谢。
你知道DataSet
s, DataTable
s, DataColumn
s和DataRow
s吗?
你甚至可以处理类型化数据集。有很多现成的支持