【问题标题】:Delete some data on dataset C#删除数据集 C# 上的一些数据
【发布时间】:2016-07-10 13:18:34
【问题描述】:

我想从数据集中删除一些数据而不是整行。

例如: 新闻没有 |摆脱 |备注
1         100   L1,R1,R2,R3

在这里我只想删除 L1 数据。

我的代码

 DataSet dSet = new DataSet();
 ExcelAdapter.Fill(dSet);
 dSet.Tables[0].Rows[i].Delete(); //<-- It delete whole row.i just want to delete L1 only.

【问题讨论】:

    标签: c# sql asp.net asp.net-mvc dataset


    【解决方案1】:

    您应该更新单元格的值(就像您在数据库中所做的那样)。在您的情况下,删除 L1 它看起来像这样

    dSet.Tables[0].Rows[i] = string.join(",",dSet.Tables[0].Rows[i].ToString().Split(',').RemoveAt(0));
    

    【讨论】:

    • 如果L1 不是第一个呢?例如R1,R2,R3,L1
    • @Gubr,你确定有一个函数RemoveAt(index) 用于字符串数组吗?
    • @AlexArt。你说的对。正确(且清晰)的方法是遍历数组,删除不需要的值,然后再次加入它们。
    • @Noobie 你也是对的。字符串数组没有 RemoveAt。遍历数组也应该解决这个问题。
    【解决方案2】:

    在这种情况下,您需要使用不包含 L1 的值更新备注列

    假设 L1 是您动态获取的值(例如作为用户输入),我认为它可能是这样的:

    var valToRemove = "L1"; //provided by user
    var remarks = dSet.Tables[0].Rows[i]["REMARKS"];
    var splittedRemarks = new List<string>(remarks.Split(new[]{','}, StringSplitOptions.RemoveEmptyEntries));
    splittedRemarks.Remove(valToRemove); //If you need to remove all the L1 values use `RemoveAll` method instead
    dSet.Tables[0].Rows[i]["REMARKS"] = splittedRemarks.Join(",");
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      string str = dSet.Tables[0].Rows[i]["REMARKS"].toString();
      dSet.Tables[0].Rows[i]["REMARKS"] = str.Remove(str.IndexOf("L1"), 3);
      

      在这里,找到了 L1 的索引,并从该索引开始删除了 3 个字符。

      【讨论】:

      • 可能会损坏某些输入的数据。例如对于L123,L1,R1,R2 运行str.Remove(str.IndexOf("L1"), 3) 后,值将是3,L1,R1,R2
      • 糟糕,抱歉。正在努力。 @AlexArt。
      • @TechGuy,这只有在没有大于 L9 的值时才有效。
      【解决方案4】:

      你想更新数据而不是删除它...:

      dSet.Tables[0].Rows[i]["REMARKS"] = "R1,R2,R3";
      

      【讨论】:

        猜你喜欢
        • 2016-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 2011-12-27
        • 2011-10-29
        • 1970-01-01
        • 2013-09-05
        相关资源
        最近更新 更多