C# 对DataTable中按条件进行筛选和更新。
2021-06-22 19:05
                         标签:article   row   建立   select   sele   内容   tin   命名   views    当我们频繁的对数据库进行操作时,可能造成CPU使用率过高,这时我们可以先将数据表读取到DataTable,然后在必要的时候再更新到数据库中。  以下依次进行说明:  DataRow[] rows = dtTest.Select(); DataRow[] rows = dtTest.Select("id1 DataRow[] rows = dtTest.Select("id1 DataRow[] rows = dtTest.Select("id1     //建立一张数据表     //向表中添加数据     bool[] rowChanged = new bool[dtInitial.Rows.Count];       //用于保存修改的行的索引号     }     //将未修改的行存入dtReturn C# 对DataTable中按条件进行筛选和更新。 标签:article   row   建立   select   sele   内容   tin   命名   views    原文地址:https://www.cnblogs.com/deepalley/p/10204707.html
以下是DataTable中对数据的选择和更新操作。采用DataTable.Select()方法。采用该方法获取的结果是DataRow对象数组。Select()有三种重载(以下资料来自MSDN): 
MSDN关于Select()方法内容链接 
1.Select() 获取DataTable中的所有行,转换成DataRow的格式。这里不做过多说明,以下对dtTest(非空的DataTable)使用Select()
1
2.Select(String expression) 如以下例子所示,expression代表筛选的表达式(sql语句where之后的部分),但不包含排序方式。
3.Select(String expression ,?String sortOrder ) 其中sortOrder 代表排序方式(字段名称+正序或者倒序)。
4.DataTable.Select (String expression ,?String sortOrder ,?DataViewRowState dVRState) 其中dVRState代表这一个数据集合的状态。枚举类型。详细内容可参考以下链接: 
DataViewState详细介绍
!!!更新DataTable
有了以上的基础我们即可以根据条件轻松的获取DataTable中的想要的内容了。只不过通过Select()方法获取的结果是DataRow[ ]形式,如果需要将其转换为DataTable格式,可采用如下的方法(全是自己码的,觉得好用给我点个赞,^_^):
    DataTable dtInitial = new DataTable("Orders");
    dtInitial.Columns.Add("id", typeof(Int32));
    dtInitial.Columns.Add("name", typeof(string));
    for (int i = 0; i     {
        DataRow newRow = dtInitial.NewRow();
        newRow["id"] = i;
        newRow["name"] = "未命名";
        dtInitial.Rows.Add(newRow);
    }
    //更新表的条件
    string expression = "id     //要更新的字段
    string variable = "name";
    //更新字段的值
    string value = "Clear_mind";
    //不重复字段
    string primaryKey = "id";
    DataTable dtReturn = null;      //用于返回结果的DataTable
    DataRow[] arrRow = dtInitial.Select(expression);     //选出满足更新条件的行
    dtReturn = arrRow[0].Table.Clone();     //复制需要更新的表的结构
    for (int i = 0; i     {
        rowChanged[i] = false;
    }
    //将修改的行存入dtReturn
    foreach (DataRow row in arrRow)
    {
        row[variable] = value;      //将要更新的值写入需要更新的行的对应字段
        for (int i = 0; i         {
             //找到修改过的行
            if (dtInitial.Rows[i][primaryKey].ToString() == row[primaryKey].ToString())   
            {
                dtReturn.ImportRow(row);        //将修改过的行存入dtReturn
                rowChanged[i] = true;        //将修改过的行号对应的标志位置1
                break;
            }
        }
    for (int i = 0; i     {
        if (rowChanged[i] == false)
            dtReturn.ImportRow(dtInitial.Rows[i]);
    }
    //打印结果
    for (int i = 0; i     {
        Console.WriteLine(dtReturn.Rows[i]["name"].ToString());
    }
--------------------- 
作者:DurableHumor 
来源:CSDN 
原文:https://blog.csdn.net/my_clear_mind/article/details/79673205 
版权声明:本文为博主原创文章,转载请附上博文链接!
文章标题:C# 对DataTable中按条件进行筛选和更新。
文章链接:http://soscw.com/index.php/essay/97506.html