Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Data.DataTable、DataRowCollection和DataColumns:索引是如何工作的?_C#_Datatable_Class Design - Fatal编程技术网

C# System.Data.DataTable、DataRowCollection和DataColumns:索引是如何工作的?

C# System.Data.DataTable、DataRowCollection和DataColumns:索引是如何工作的?,c#,datatable,class-design,C#,Datatable,Class Design,在数据表中: 我可以访问所有DataRow元素,如下所示: DataTable table = GetMyTable(); for (int i = 0; i < table.Rows.Count; i++) { DataRow row = table.Rows[i]; Console.WriteLine(row); } 最后,我可以访问数据表对象的每个单元格,如下所示: DataTable table = GetMyTable(); for (int i = 0; i <

数据表中

我可以访问所有
DataRow
元素,如下所示:

DataTable table = GetMyTable();
for (int i = 0; i < table.Rows.Count; i++) {
  DataRow row = table.Rows[i];
  Console.WriteLine(row);
}
最后,我可以访问
数据表
对象的每个
单元格
,如下所示:

DataTable table = GetMyTable();
for (int i = 0; i < table.Columns.Count; i++) {
  DataColumn column = table.Columns[i];
  Console.WriteLine(column);
}
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);
  }
}
DataTable=GetMyTable();
for(int i=0;i
至少在第三种技术中看起来有些信息丢失了

我的问题是: 如何管理此对象数组


我一直在研究如何用这种基本类型的功能重新创建一些东西(因为我已经熟悉它),但我只是不知道如何设计所有这些小的子类来让它工作

建立简单的班级关系并不难:

class Table
{
    public IEnumerable<Row> Rows { get; set; }
}
class Row
{
    public IEnumerable<Cell> Cells { get; set; }
}
class Cell { }
类表
{
公共IEnumerable行{get;set;}
}
班级排
{
公共IEnumerable单元格{get;set;}
}
类单元格{}

它可以简单到:

List<object[]> Rows {get; private set;} 

在实际的
DataTable
中,
object[]
被包装在一个
DataRow
类中,该类提供诸如
Field
之类的访问函数,
List
通过
DataRowCollection
类向外部公开更有限的信息量

该表有一个
DataColumn
列表。这是列定义的列表。该表有一个行列表。在列列表中,每行每列有一个单元格



诀窍在于,行是由表创建的。该表知道
集合的长度,以及列的数据类型和对它们的任何约束。当表格创建一个
数据行时,它将使用正确的列数创建它。

请更清楚地回答您的问题。你真的不明白有一个列表属性的对象的列表吗?嗨,John。不,这里显然有两个列表:行列表和列列表,但是如果我添加行,列必须更新,反之亦然。表中有列列表。这是列定义的列表。该表有一个行列表。在列列表中,每一行的每一列都有一个单元格。这看起来很接近,但是
DataColumn
对象如何适应这个呢?它是否是
类中的一个单独集合,以某种方式仅通过
DataTable
对象公开?如果要匹配内置数据集的工作方式,它将是table类中的一个可枚举集。不知何故,我需要为每个列维护一个标题值集合(包含列名和数据类型的),强制所有行具有相同数量的元素,如果添加或删除列,则对所有行元素执行该操作。似乎是这样。但是,不知何故,每行的长度都必须固定。这一固定点是什么?表还是列集合?我如何将行创建为某种类型的
列表
并锁定长度属性每行的长度与列数的关系?然后,我必须能够添加和删除列,并获得每列的序号。我每天都认为理所当然的事情非常复杂!谢谢桑德斯先生。我认为编辑(在水平规则之后添加)解释了为什么我无法理解在
DataTable
类的引擎盖下发生了什么。
obj[5][3]="meep.";