0

次のようなデータ行を含むテキストボックスがあります。

sheep
haggis
red squirrels
chickens
rabbits

foodsそして、これらの値を格納する、というタイトルの1つの列を持つSQLCEテーブル。これら2つのデータソースを同期するための最良の方法は何ですか?たとえば、ユーザーがテキストボックスからとを削除red squirrelschickensて追加したcarrots場合、を含むテーブル行と削除する必要があるテーブル行、red squirrelsおよびを含むchickens新しい行を挿入しますcarrots

今のところ、私の解決策は、古いリストと新しいリストを比較して、2つのアクションを実行することです。1)以下を使用してリストを比較することにより、削除されたアイテムを見つけますExcept

List<String> removedFoods = oldList.Except(newList).ToList();

これらのタグは。で削除されDELETEます。別のExceptステートメントは、追加されたタグを検索し、その後、。で追加されINSERTます。

List<String> addedFoods = newList.Except(oldList).ToList();

私が見逃している1つのC#/ SQLステートメントを含むより良い方法(または一般的にはより良い方法)ですか?

4

2 に答える 2

1

あなたの質問はパフォーマンスについてですよね?すでに行っていることからパフォーマンスを改善する余地はあまりありません。何があっても、削除と挿入を行う必要があります。ティムがあなたの質問への回答で尋ねたように、それはあなたのテーブルにある食べ物の数に依存します。

次のようにテーブルデータをクリアできます。

TRUNCATE TABLE foods 

MSDN:TRUNCATE TABLEは、WHERE句のないDELETEステートメントに似ています。ただし、TRUNCATE TABLEはより高速で、使用するシステムおよびトランザクションログリソースが少なくなります。

次に、テキストボックスのデータを使用して、正しいデータをに挿入し直します。

于 2012-06-12T23:53:23.217 に答える
1

すべての解析と処理を自分で行うよりも、複数行のテキストボックスのように見えるデータグリッドを作成する方が簡単です。

行/行の追跡がはるかに簡単になります。

削除と更新も。

于 2012-06-13T04:00:55.233 に答える