2016-03-23 9 views
1

行全体ではなくデータセットからいくつかのデータを削除します。データセットCの一部のデータを削除します。

例: NewsNo | RID |
                                        L1、R1、R2、R3

はここではREMARKS私は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. 

答えて

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(","); 
1

あなたはそれを削除しないでデータを更新したい私のコード...:あなたはしない値で備考欄の更新を行う必要があり、この場合には

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

(データベースの場合と同じように)セルの値を更新する必要があります。あなたのケースでL1を削除することはあなたがこれを行うことができ、この

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

「L1」が最初でない場合はどうなりますか?例えば ​​'R1、R2、R3、L1' –

+0

@Gubr、文字列配列のための関数' RemoveAt(index) 'がありますか? – Shanid

+0

@AlexArt。あなたが正しいです。適切な(そして明確な)方法は、配列をループし、不要な値を削除してから再度結合することです。 – Gubr

0

次のようになります。

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

、L1のインデックスが発見され、3つの文字がそのインデックス位置から削除されます。

+1

一部の入力のデータを破壊する可能性があります。例えば ​​'L123、L1、R1、R2'の場合' str.Remove(str.IndexOf( "L1")、3)を実行した後、値は '3、L1、R1、R2'になります –

+0

それに取り組んでいます。 @AlexArt。 – Shanid

+0

@ TeeGuy、これはL9より大きい値がない場合にのみ機能します。 – Shanid

関連する問題