2011-03-03 102 views
0

我有一個帶有sortOrder列的數據庫表。我將這個列表顯示給用戶,他們使用jQuery來查找列表,然後將其保存回服務器。LINQ根據動態列表更新數據庫排序順序

重新排列列表後,我按照該數據庫表中所有ID的正確順序獲得一個新列表。

我需要一個很好的方法來更新這個新的排序順序到數據庫。我想要的是使用基於我從用戶處取回的這個ID列表的自定義排序順序來查詢數據庫。然後,我可以遍歷該列表並將排序順序從0遞增。

VB中的代碼獎勵點數,儘管C#也很好。

謝謝!

回答

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(); 
+0

我想更新數據庫中的排序順序。我有一個數組{5,3,2,6,1}。這代表正確排序的ID。數據庫將具有這樣的列(id | sortOrder){6 | 1,5 | 2,4 | 3,3 | 4,1 | 5,4 | 5} – Nate 2011-03-03 19:49:18