从最后一个

时间:2015-04-22 12:41:29

标签: c# datatable

正如标题所说,我有一个数据表,现在我想删除数据表中除最后一行之外的所有行。我知道有很多复杂的方法可以做到这一点,但我想知道简短的& amp;有效的方法来完成这项任务。

5 个答案:

答案 0 :(得分:3)

DataRow dr = dt.Rows[dt.Rows.Count -1];

dt.Rows.Clear();
dt.Rows.Add(dr);

答案 1 :(得分:3)

您可以使用向后for - 循环+ RemoveAt

for (int i = dataTable.Rows.Count - 2; i >= 0; i--)
    dataTable.Rows.RemoveAt(i);

答案 2 :(得分:2)

var lastRow = myDataTable.AsEnumerable().Last();
var newDataTable = new[] {lastRow}.CopyToDataTable();

优点:

  • 使用Last()会使您的意图绝对清晰,并且您无法获得任何错误。
  • 不修改原始数据表。

缺点:

  • 性能不佳(O(n)遍历列表)。
  • 创建新数据表,而不是就地修改旧数据表。
  • 仅保留列,所有其他表属性(例如约束)不会转移到新数据表。

参考:

答案 3 :(得分:1)

dataTable = dataTable.AsEnumerable().Skip(dataTable.Rows.Count - 1).CopyToDataTable();

答案 4 :(得分:0)

您可以尝试使用简单的for循环执行此操作,如下所示

foreach (DataRow dr in ds.Tables[0].Rows)
{ 
    if(!dr.Equals(ds.Tables[0].AsEnumerable().Last()))
    {
       ds.Tables[0].Rows.Remove(dr);
    }
}