繁体   English   中英

从数据表中删除除最后一行以外的所有行

[英]Remove all rows from the datatable except last one

如标题所示,我有一个数据表,现在我想删除数据表中除最后一行以外的所有行。 我知道可以有很多复杂的方法,但是我想知道执行此任务的快捷方式。

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

好处:

  • 使用Last()可以使您的意图绝对清晰,并且您不会出错。
  • 原始数据表未修改。

缺点:

  • 性能不佳(通过列表进行O(n)次迭代)。
  • 创建一个新的数据表,而不是就地修改旧的数据表。
  • 仅保留列,所有其他表属性(例如约束)都不会保留到新数据表中。

参考:

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

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

你可以使用一个向后for -loop + RemoveAt

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM