SQL Serverでプログラム中のDictionaryを使用して、SQL文でUPDATE ~ SELECTしたいです。
利用環境 SQL Server 2019 Express
1つのSQLコマンドで下記の①②③を実行するようなイメージです。
① 仮テーブル作成
② @tempにプログラム中のDictionaryを追加したい { { 1: 1}, { 2: 2} } … @tempのIdとOrderに該当
③ @tempの情報でUPDATE ~ SELECT
どなたかご教授をお願いします。
SQL
1 /* ① */ 2DECLARE @temp TABLE ( 3 [Id] int NOT NULL, 4 [Order] int NOT NULL 5) 6 7 /* ② やりかたがわかっていない。Insertするだけ? */ 8 9 10 /* ③ 下記の例はエラーするかも */ 11UPDATE [dbo].[M_Tests] 12SET [Order] = B.[Order] 13FROM [dbo].[M_Tests] AS A 14 LEFT OUTER JOIN ( 15 SELECT [Id], ROW_NUMBER() OVER ( 16 ORDER BY [Order] ASC 17 ) AS 'Order' 18 FROM @temp 19) AS B 20ON A.[Id] = B.[Id]
C#
1public async Task<int> SortAsync(IReadOnlyDictionary<long, long> dictionaries) { 2 string sql = @"SQL文をここに書く" 3 4 await this._context.Database.ExecuteSqlRawAsync(sql, null); // ← キーとかなら第2引数以降にわたせる 5 6 return; 7}
追記
DataTableのみ作成してみました。
C#
1// DataTableのみ作成してみました。 2DataTable dataTable = new DataTable("temp"); 3dataTable.Columns.Add("id", typeof(long)); 4dataTable.Columns.Add("order", typeof(long)); 5 6foreach (var dictionary in dictionaries) { 7 DataRow dataRow = dataTable.NewRow(); 8 dataRow["id"] = dictionary.Key; 9 dataRow["order"] = dictionary.Value; 10}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/07/09 07:44 編集
2021/07/09 07:52 編集
退会済みユーザー
2021/07/09 08:06 編集
2021/07/09 08:16 編集
退会済みユーザー
2021/07/09 08:23
2021/07/09 08:36
退会済みユーザー
2021/07/09 09:21 編集
退会済みユーザー
2021/07/09 10:18