我正在尝试从datatable中删除特定行。添加最后一行时,我需要删除黄色行。从下面的数据表中选择
非常容易DataRow[] dr = dt.Select("STOK_KODU='HAMMADDE_2'");
我想知道是否有类似下面的方法来删除???或者您会建议从数据表中删除行的简单方法吗?
dt.Delete("STOK_KODU='HAMMADDE_2'");
答案 0 :(得分:3)
一种方法是使用您要保留的行重新创建表:
dt = dt.AsEnumerable()
.Where(row => row.Field<string>("STOK_KODU") != "HAMMADDE_2")
.CopyToDataTable()
另一种是使用DataRowCollection.Remove
:
DataRow[] rowsToRemove = dt.Select("STOK_KODU='HAMMADDE_2'");
foreach (var rowToDelete in rowsToRemove)
dt.Rows.Remove(rowToDelete);
如果要删除少量行并且表格很大,第二种方法会更有效。使用LINQ的第一种方法更强大,因为您可以使用任何代码但效率较低。
答案 1 :(得分:1)
您可以访问Rows
的<{1}}集合:
DataTable
答案 2 :(得分:1)
试试这个::
DataRow[] rows;
rows=dt.Select("STOK_KODU='HAMMADDE_2'");
foreach(DataRow r in rows)
r.Delete();
答案 3 :(得分:1)
从内存中删除行DataTable对象非常简单
dt.Select("STOK_KODU='HAMMADDE_2'").AsEnumerable().ToList().ForEach(x => x.Delete());
但是,您应该考虑Delete方法只是将RowState标记为Deleted,但行仍在DataTable.Rows集合中。要真正删除它们,您需要致电
dt.AcceptChanges();
没有这个调用,如果循环遍历数据表行集合,则需要检查RowState以避免出现错误消息,指出您无法访问已删除行的信息
foreach(DataRow r in dt.Rows)
{
if(r.RowState != DataRowState.Deleted)
Console.WriteLine(r[0].ToString());
}