初歩的な質問ですいません。
現在BlazorでToDoアプリを作成しています。
内容はDBに格納しており、以下のようにToDoの順番を表す番号と内容を要素として持っています。
1 洗濯
2 ゴミ捨て
3 買い出し
4 料理
やりたいことは要素を消した際に(例として2 ゴミ捨てを削除)、順番を表す番号を振りなおしたいと考えています。
1 洗濯 1 洗濯
2 ゴミ捨て 2 買い出し
3 買い出し 3 料理
4 料理 4 洗い物
5 洗い物 5 読書
6 読書
テーブルは以下の構成です
C#
1public partial class ToDoList 2{ 3 public int ToDoNum {get; set;} 4 public string ToDoText {get; set;} 5}
以下のように記述し、削除した次の要素のToDoNumだけ変更出来ましたが、
以下はUIで選択されたTodoの内容を受け取り、ToDoNumを変更しています。
削除した要素の番号は取得できるので(selectTodo)、削除された次の内容のToDoNumには+1しています。
C#
1// selectTodoはUIで選択されたTodoの内容 2public void ResettingToDoNumber(ToDoList selectTodo) 3{ 4 //削除した次の内容のToDoNumを設定 5 var nextNum = selectTodo.ToDoNum + 1; 6 7 using(var dbContext = DbFactory.CreateDbContext()) 8 { 9 //削除した次の内容を取得 10 var number = dbContext.ToDoList.Single(x => x.ToDoNum == nextNum); 11 12 //番号再設定 13 number.ToDoNum -= 1; 14 } 15}
しかし、残りの要素(上記での4~6)をどのように変更すればよいか思いつかず悩んでいます。
具体的には繰り返し処理をする必要があると考えますが、消された要素の後に、あと何個要素が残っているかをうまく表現できず悩んでいます。
試したこととして要素をカウントし、削除した要素からの差分をループカウンターに設定しようと考えましたが、
これでは残り何個としてうまく表現できませんでした。
c#
1//削除した次の内容のインデックスを設定 2var resettingNum = selectTodo.ToDoNum - 1; 3 4// 5var todoCount = dbContext.ToDoList.Count(); 6var remainingCount = todoCount - resettingNum;
とても回りくどいやり方をしているような気がします。
削除した要素以降の残りの要素の番号を振りなおすにはどのようにすればよいでしょうか?
初歩的な質問で申し訳ありませんがアドバイスいただきたいです。
回答1件
あなたの回答
tips
プレビュー