0

selected_deparmtents リスト内の部門の Lft および Rgt プロパティを変更することを想定しているこのコードで誰かが私を助けてくれますか? 私が抱えている問題は、以前の部門の Lft および Rgt プロパティを保持する一時変数で古い値または以前の値を取得することです。それが行うことは、間違っている temp.Lft プロパティの更新された値を表示することです。以前の Lft プロパティで計算を行いたいのです。この問題を回避する方法を知っている人はいますか

int counter = 0;
int lft = department.Lft;
int rgt;
Department temp;
List<Department> clones = new List<Department>(selected_departments);                   

foreach (Department dept in selected_departments)
{
    if (counter < 1)
    {
       rgt = (dept.Rgt - dept.Lft);                            
       dept.Lft = lft;
       dept.Rgt = lft + rgt;
    }
    else
    {                                                        
        temp = clones.ElementAt(counter - 1); // <-- incorrect 
        // previous departments value should be old value 
        lft = lft + (dept.Lft - temp.Lft);// here temp.Lft always show the newly updated value
        rgt = lft + (dept.Rgt - dept.Lft);

        dept.Lft = lft;
        dept.Rgt = rgt;
    }
    db.Entry(dept).State = EntityState.Modified;
    db.SaveChanges();            
    counter++;
}
4

1 に答える 1