LINQ针对动态列表更新数据库排序顺序

时间:2011-03-03 19:30:39

标签: .net linq

我有一个带有sortOrder列的数据库表。我将此列表显示给用户,他们使用jquery来求助列表,然后将其保存回服务器。

重新排序列表后,我按照该数据库表中所有ID的正确顺序获取一个新列表。

我需要一种很好的方法来将这种新的排序顺序更新到数据库。我想要的是根据我从用户那里得到的ID列表,使用自定义排序顺序查询数据库。然后我可以单步执行该列表并从0开始增加排序顺序。

VB中代码的加分点,虽然C#也很好。

谢谢!

1 个答案:

答案 0 :(得分:0)

除非在数据表中有排序顺序字段(或与将原始表的字段存储为FK的排序顺序表的关联),否则无法在数据库中存储排序顺序。如果您有此字段,则在您的linq查询中执行OrderBy(x=>x.SortOrder)

所以你有数据库记录预测

   public class ObjectFromDb{
        int Id{get;set;}
        int SortOrder{get;set;}
   } 

获得IQueryable<ObjectFromDb> queryableint[] newSortOrder后,请执行以下操作:

     var oldSortedList = queryable.OrderBy(x=>x.SortOrder).ToList()
     foreach(var i=0;i<oldSortedList.Count;i++;){
        oldSortedList[i].SortOrder = newSortOrder[i];
     }
     dataContext.SubmitChanges();