.net Datatable Row插入顺序

时间:2014-01-20 08:03:56

标签: c# datatable fifo

当我向Datatable添加行,然后迭代该Datatable时。 我会以相同的顺序获取行,然后插入它们吗?先进先出? 或者我可以不依赖该命令吗?

 row = datatable.NewRow();
 row("id") = 1;       
 table.Rows.Add(row);
 row = datatable.NewRow();
 row("id") = 2;       
 table.Rows.Add(row);


foreach(Row row in datatable.AsEnumerable())
{
   // FIFO here? always get row with id 1 as first row and row with id 2 as second row?
}

2 个答案:

答案 0 :(得分:1)

如果您手动执行此操作,当然

MSDN - Adding Data to a DataTable

  

请注意,数组中的值按顺序与列匹配,   根据它们在表格中的显示顺序。

答案 1 :(得分:1)

是的,通常情况就是这样。 如果您需要对行进行显式排序,我建议您在迭代它们之前对它们进行排序。通过执行OrderBy<> linq类型查询或使用DataTable上的Select方法。

此外,您可以使用DataTable的Rows属性来获取所有行的可枚举,而不是进行AsEnumerable调用。

编辑: 通过检查DataTable的反编译源,我发现DataTable的Rows属性返回一个DataRowCollection对象。 DataRowCollection将行存储在基于二叉树的结构中,允许您根据其数组索引获取项目。因此它将按照添加的顺序返回行。只要我们公开一个采用数字索引的索引器就暗示了这一点。

此外,AsEnumerable扩展方法会将行转换为包含与EnumerableRowsCollection相同类型的IEnumerable<DataRow>