質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

2回答

522閲覧

C# insert,update,deleteを同時に実現

hartman1994

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2018/07/02 13:14

前提・実現したいこと

C#とiBATISでinsert,update,deleteを同時に実現したいです。
DBはSQLserverです。

元データとなるクラス A class { string code {get set} string name {get set} } select実行時の受け取るクラス Btable class { string code {get set} string name {get set} 以下略 } ①元となるクラスがリストで渡されます。 List<A> ②DBから現時点でのデータを取得します List<Btable> この二つの値を元にInsert,Update,Deleteをしたいです。 以下条件です。 List<Btable>にあってList<A>にないものはList<Btable>のDBから削除 List<A>とList<Btable>に一致するものはList<A>でList<Btable>のDBを更新 List<A>にあってList<Btable>にない場合はList<A>の内容をList<Btable>のDBに追加 といった条件なのですが、以下のような感じで追加、更新、削除をそれぞれ一回づつ計3回もfor文を回さなくちゃいけないのかなと思っています。 for文を回す回数を減らしてたりできないかなと思っているのですが、もう少し簡単にできるような方法ありませんか? foreach(A in List<A>) {  if (List<Btable>.Any(_ => _code == A.code) // DB更新 } ちゃんとしたコード書けなくてすみません。言いたいことが伝わればいいのですが...

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

その要件だと、DBからList<Btable>を全て削除してから、List<A>を全て追加しても同じ結果になりませんか?

投稿2018/07/03 02:26

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

List<A>側のデータを別テーブルで作成して、MARGE文で処理するのはどうでしょう?
MERGE を使用したデータの挿入、更新、および削除

投稿2018/07/02 14:01

YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問