删除DataTable中除指定行以外的行,集合元素删除操作,倒序删除

摘要:
}privatevoidChangeRowFilter(){DataTablegridTable=(DataTable)dataGrid1.DataSource;dt.Columns.Add(“ID”);dt.Ccolumn.Add(“NAME”);dt.Column.Add(“MEMO”);for(inti=dt.Rrows.Count-1;=0){dt.Rrows[i].Delete();

https://www.cnblogs.com/zhangchenliang/archive/2010/08/02/1790600.html

简介:这是删除DataTable中除指定行以外的行 - .NET技术 / C#的详细页面,介绍了和c/c++,删除DataTable中除指定行以外的行 - .NET技术 / C#有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处

假设有一个DataTable的数据如下所示:

ID NAME MEMO
1 AA 1111
2 BB 2222
3 CC 3333
4 DD 4444
5 EE 5555
6 FF 6666
7 GG 7777
.. .. ....

要删除ID包含在集合(1,3,5,6,......)中以外的行,
也就是说保留ID包含在集合(1,3,5,6,......)中的行,其他的行删除.
回答 1

------其他回答(1分)---------

dt.Rows[i].Delete()
i你知道的
------其他回答(1分)---------

DELETE FROM table WHERE id NOT IN (...)
------其他回答(1分)---------

你可以用DataView过滤!就可以只看你要的数据!
C# code

private void BindDataGrid()
{
DataTable table = new DataTable();

// Insert code to populate a DataTable with data.

// Bind grid to DataTable.
dataGrid1.DataSource = table;

}

private void ChangeRowFilter()
{
DataTable gridTable = (DataTable) dataGrid1.DataSource;

// Set the RowFilter to display a company names that 
// begin with A through I..
gridTable.DefaultView.RowFilter = "CompanyName < 'I'";

}

------其他回答(1分)---------

引用 3 楼 lzsh0622 的回复:

DELETE FROM table WHERE id NOT IN (...)

删除后 重新连接数据库
------其他回答(1分)---------

DELETE FROM table WHERE id NOT IN (1,3,5,6,......)
这个就可以
------其他回答(1分)---------

C# code

private void button1_Click(object sender, EventArgs e)
{
string[] ids="1,3,5".Split(',');
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("NAME");
dt.Columns.Add("MEMO");
dt.Rows.Add("1", "AA", "1111");
dt.Rows.Add("2", "BB", "1111");
dt.Rows.Add("3", "CC", "1111");
dt.Rows.Add("4", "DD", "1111");
dt.Rows.Add("5", "EE", "1111");

for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
    if (Array.IndexOf(ids,dt.Rows[i]["id"].ToString())>=0)
    {
        dt.Rows[i].Delete();
     }
}

}

------其他回答(1分)---------

view.Table = DataSet1.Tables["Suppliers"];
view.AllowDelete = true;
view.AllowEdit = true;
view.AllowNew = true;
view.RowFilter = "ID NOT IN '1,2,3,4,5,6'";

------其他回答(1分)---------

C# code

view.Table = DataSet1.Tables["Suppliers"];
view.AllowDelete = true;
view.AllowEdit = true;
view.AllowNew = true;
view.RowFilter = "ID NOT IN '1,2,3,4,5,6'";

我猜过去,你希望做数据过滤,那为什么不用DataView做过滤?
------其他回答(66分)---------

C# code

        DataTable dt = new DataTable("Data");
        dt.Columns.Add("Id", typeof(int));
        dt.Columns.Add("Name", typeof(string));

        dt.Rows.Add(1, "小三1");
        dt.Rows.Add(2, "小三2");
        dt.Rows.Add(3, "小三3");
        dt.Rows.Add(4, "小三4");
        dt.Rows.Add(5, "小三5");
        dt.Rows.Add(6, "小三6");
        dt.Rows.Add(7, "小三7");

        //保留的行
        string[] ids = { "1", "3", "5" };
        // 获取删除的行集合
        DataRow[] drsDel = dt.Select(string.Format("Id not in ({0})", string.Join(",", ids)));
        //直接在集合中删除
        foreach (DataRow drDel in drsDel)
        {
            dt.Rows.Remove(drDel);
        }

------其他回答(1分)---------

学习,帮顶!~
------其他回答(1分)---------

帮你顶
------其他回答(11分)---------

for (int j = 0; j < myDataRowsError.Length; j++)
{
//m_myDataSet.Tables[m_strMyDataSource].Rows.Remove(myDataRowsError[j]);//如果用这句数据库里的数据并没有删除掉
myDataRowsError[j].Delete();//用这句数据库里的数据才会删除掉
}

集合内删除,这种写法就不对。 Delete()能删除也是侥幸,出错的地方没让你遇上。
------其他回答(11分)---------

"调用了Update可是Remove数据里就是没删除掉用Delete就可以,非常奇怪"

如果要Update更新数据库,要调用 Delete() 方法才行,并且之后不能调用 AcceptChanges() 方法;

MSDN:
Remove()方法:当移除行时,该行中的所有数据都将丢失。还可以调用 DataRow 类的 Delete 方法来标记某行以供移除。调用 Remove 等同于先调用 Delete 再调用 AcceptChanges。

------其他回答(2分)---------

C# code

string[] ids="1,3,5".Split(','); // 需要删除的ID号,存入数据组
for (int i = dt.Rows.Count - 1; i >= 0; i--) // 集合元素删除操作,倒序删除
{
if (Array.IndexOf(ids,dt.Rows[i]["id"].ToString())>=0) // 当前id号是否属于删除范围
{
dt.Rows[i].Delete();
}
}

这个方法中用到: Array.IndexOf ,String.Split , 倒序的for结构

DataTable如何删除特定id的行

DataTable dt = dataSet1.table1.GetAllRows();
DataRow[] foundRow = dt.Select("catalogid = 0", "");
foreach (DataRow row in foundRow)
{
dt.Rows.Remove(row);
}
GridView1.DataSource = dt;
GridView1.DataBind();

免责声明:文章转载自《删除DataTable中除指定行以外的行,集合元素删除操作,倒序删除》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇typescript 学习springMVC学习--day02下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数据可视化之Processing【1】

说Processing之前得先说一下数据可视化。 数据可视化--顾名思义。是关于数据之视觉表现形式的研究,将数据用其它方式表现出来,使之更直观, 更清晰,更easy分析和处理。常见的表达方式如word中使用广泛的直方图、树状图、折线图、饼状图等。 数据可视化技术的基本思想是将数据库中每个数据项作为单个图元元素表示,大量的数据集构成数据 图像。同一时候将...

数据分析--降维--LDA和PCA

一、因子分析   因子分析是将具有错综复杂关系的变量(或样本)综合为少数几个因子,以再现原始变量和因子之间的相互关系,探讨多个能够直接测量,并且具有一定相关性的实测指标是如何受少数几个内在的独立因子所支配,并且在条件许可时借此尝试对变量进行分类。   因子分析的基本思想   根据变量间相关性的大小把变量分组,使得同组内的变量之间的相关性(共性)较高,并用一...

Vue如何使用vue-area-linkage实现地址三级联动效果

很多时候我们需要使用地址三级联动,即省市区三级联动。网上有很多插件,在此介绍Vue的一款地区联动插件:vue-area-linkage,下面介绍如何使用这个插件实现地址联动效果: 一、安装 // v5之前的版本 npm i --save vue-area-linkage // v5及之后的版本 npm i --save vue-area-linkage...

Spark Partition

分区的意义 Spark RDD 是一种分布式的数据集,由于数据量很大,因此它被切分成不同分区并存储在各个Worker节点的内存中。从而当我们对RDD进行操作时,实际上是对每个分区中的数据并行操作。Spark根据字段进行partition类似于关系型数据库中的分区,可以加大并行度,提高执行效率。Spark从HDFS读入文件的分区数默认等于HDFS文件的块数(...

JavaScript WebGL 绘制一个面

目录 引子 绘制三角形 执行过程 高清处理 绘制矩形 索引缓冲对象 参考资料 引子 JavaScript WebGL 基础疑惑点之后进行了一些优化,然后尝试绘制常见二维的面。 WebGL 中几何体最终都是由三角形构成,由三角形切入比较合适。 Origin My GitHub 绘制三角形 这是示例,基于绘制一条直线主要的变化有: 顶点...

前端动态表单的处理方法

背景: 类似于如下的表单的形式,如果我们提前知道了表单的key,那么我们就可以通过正常的处理表单形式,完成相关数据的获取。 但是,如果我们事先不知道表单的属性key值及对应的输入框还是select框, 那我们就得选择其他方式处理。  步骤一:首先,我们约定,后台返回的格式如下: 其中,code字段的具体值为表单的key,type为到底是输入框还是选择框,...