2011-03-03 3 views
0

sortOrder 열이있는 데이터베이스 테이블이 있습니다. 나는이 목록을 사용자에게 표시하고 jquery를 사용하여 목록을 정리 한 다음 서버에 다시 저장합니다.LINQ 동적 목록에 대한 데이터베이스 정렬 순서 업데이트

목록을 재정렬 한 후 해당 데이터베이스 테이블의 모든 ID가 올바른 순서로 새 목록이 표시됩니다.

이 새로운 정렬 순서를 데이터베이스로 업데이트하는 좋은 방법이 필요합니다. 내가 원하는 것은 사용자로부터 반환되는이 ID 목록을 기반으로 사용자 지정 정렬 순서로 데이터베이스를 쿼리하는 것입니다. 그런 다음 해당 목록을 단계별로 진행하고 정렬 순서를 0부터 증가시킬 수 있습니다.

VB에서 코드에 보너스 포인트가 있지만 C#도 좋습니다.

감사합니다.

답변

0

데이터 테이블에 정렬 순서 필드가 없거나 원래 테이블의 필드를 FK로 저장하는 정렬 순서 테이블과 연결되어 있지 않으면 데이터베이스에 정렬 순서를 저장할 수 없습니다. 당신이 당신의 LINQ 쿼리 수행에 다음이 필드이있는 경우는 IQueryable<ObjectFromDb> queryableint[] newSortOrder을 얻을 때

OrderBy(x=>x.SortOrder) 그래서 당신이 데이터베이스 레코드 투사

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

이 다음을 수행하십시오

 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를 나타냄니다. DB에는 다음과 같은 열이 있습니다 (id | sortOrder) {6 | 1, 5 | 2, 4 | 3, 3 | 4, 1 | 5, 4 | 5} – Nate