2009-09-13 3 views
1

나는 나의 표 ("ROWNUM"라고 함) 자동 증가 열을 추가 해요 그리고 그 후이 코드를 사용하여 데이터 테이블 행을 정렬, 좋은 일하고 : COLUMNNAME 내 열 중 하나입니다 (dataset.table [0]을 (를) 정렬 한 다음 상위 10 개를 얻는 방법은 무엇입니까?

DataView dv = MyDataSet.Tables[0].DefaultView; 
dv.Sort = "columnName DESC"; 

을 자동 증가 1 아닙니다).

이제 문제는 :

dv.RowFilter = "rowNum <= 10"; 

이 결과는 내가 dv.Sort을 할 때 ROWNUM이 뒤섞 때문에 내가 원하는 것이 아니다 (이된다 : 나는이 코드를 사용 상위 10 행을 취득하고자 할 때 잘못된 순서로).

행을 정렬 한 후 상위 10 개 행을 얻으려면 어떻게해야합니까?

답변

2

나는 이와 같은 것들에 대해 LINQ를 선호한다. 대신 System.Linq을 사용하여 다음과 같이 작성합니다.

var rows = MyDataSet.Tables[0].AsEnumerable() 
    .OrderByDescending(r => r["columnName"]) 
    .Take(10); 

다음에 "행"에 바인딩하십시오.

+0

var Rows = (from row in dt.AsEnumerable() orderby row["CostPerVeteran"] descending select row); dtChart = Rows.Take(10).CopyToDataTable();

하지만이 방법은 1000보다 많은 행에 좋은 일을한다면 당신은 생각 하는가?. – Dabbas

+0

예. 적어도 DataView 솔루션과 마찬가지로 작동해야합니다. –

0

추가하는 경우 AsEnumerable() 행의 .Take()가 작동하지 않습니다. 하지만 아래에 언급 된 것처럼 두 번째 줄을 추가하면 작동합니다. 당신의 도움에 대한 많은 고맙습니다

관련 문제