[Linq2Sql]刪除後重新排列的異象 ?

[Linq2Sql]刪除後重新排列的異象 ?

資料表: Test

ID int (PK)

Type int (類型)

Name nvarchar(50) (名稱)

Order int (順序)

 

需求: 刪除一筆資料時需重新排列同類型之Order

 

現象: 資料刪除, 但重新排列時, 出現跳號

 

原程式

   1:  int type = 0;
   2:  context.Test.DeleteOnSubmit(
   3:      context.Test.Where(x=>x.ID==ID).Single() );
   4:   
   5:  int i=1;
   6:  foreach(var o in context.Test.Where(x=>x.Type==type)){
   7:      o.Order = i;
   8:      i++;
   9:  } context.SubmitChanges();
 

 

資料:

0, 1,'A', 1

1, 1,'B', 2

2, 1,'C', 3

3, 1,'D', 4

 

當刪除 Name = B 時, 預期要重新排序,  但因為查詢回來要變更的物件, 竟含有'B', 故中間就空了一個2號

 

暫時的解決: 先包在一起 ... 有空再來查

   1:  int i=1;   
   2:  foreach(var o in context.Test.Where(x=>x.Type==type)){   
   3:          if(o.ID==ID){
   4:                  i--;
   5:                  context.Test.DeleteOnSubmit(o);
   6:          }else{
   7:                  o.Order = i;   
   8:          }
   9:           i++;  
  10:  } 
  11:  context.SubmitChanges();