我想从数据集中删除一些数据而不是整行。
例:
NewsNo | RID |备注
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.
答案 0 :(得分:1)
您想要更新数据而不是删除它......:
dSet.Tables[0].Rows[i]["REMARKS"] = "R1,R2,R3";
答案 1 :(得分:1)
在这种情况下,您需要使用不包含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(",");
答案 2 :(得分:1)
您应该更新单元格的值(就像在数据库中一样)。在你的情况下删除L1它看起来像这样
dSet.Tables[0].Rows[i] = string.join(",",dSet.Tables[0].Rows[i].ToString().Split(',').RemoveAt(0));
答案 3 :(得分:0)
你可以这样做:
string str = dSet.Tables[0].Rows[i]["REMARKS"].toString();
dSet.Tables[0].Rows[i]["REMARKS"] = str.Remove(str.IndexOf("L1"), 3);
此处,找到L1的索引,从该索引开始删除3个字符。