在DataTable
:
我可以像这样访问所有DataRow
元素:
DataTable table = GetMyTable();
for (int i = 0; i < table.Rows.Count; i++) {
DataRow row = table.Rows[i];
Console.WriteLine(row);
}
此外,我可以访问所有DataColumn
元素,如下所示:
DataTable table = GetMyTable();
for (int i = 0; i < table.Columns.Count; i++) {
DataColumn column = table.Columns[i];
Console.WriteLine(column);
}
最后,我可以像这样访问Cell
对象的每个DataTable
:
DataTable table = GetMyTable();
for (int i = 0; i < table.Rows.Count; i++) {
DataRow row = table.Rows[i];
object[] array = row.ItemArray;
for (int j = 0; j < array.Length; j++) {
object cell = array[j];
Console.WriteLine(cell);
}
}
至少在第三种技术中看起来有些信息丢失了。
这是我的问题: 如何管理这个对象数组?
我一直在玩如何使用这种基本类型的功能重新创建一些东西(因为我已经熟悉它),但我只是不知道如何设计所有这些小子类以使其工作!
答案 0 :(得分:3)
建立简单的阶级关系并不困难:
class Table
{
public IEnumerable<Row> Rows { get; set; }
}
class Row
{
public IEnumerable<Cell> Cells { get; set; }
}
class Cell { }
答案 1 :(得分:1)
可以这么简单:
List<object[]> Rows {get; private set;}
允许您访问它:
obj[5][3]="meep.";
在实际的DataTable
中,object[]
包含在DataRow
类中,该类提供Field<>
等访问函数,而List<>
暴露更有限通过DataRowCollection
类向外部提供的信息量。
答案 2 :(得分:1)
该表格包含DataColumn
列表。这是列定义列表。该表有一个行列表。每列对列列表中的每列都有一个单元格。
诀窍是行是由表创建的。该表知道Columns
集合的长度,以及列的数据类型以及对它们的任何约束。当表创建DataRow
时,它会使用正确的列数创建它。