2011-05-14 6 views
0

데이터 집합에 주문 정보가 가득 찼으며 DataView로 데이터 집합을 필터링하려고합니다.DataView로 필터링

이것은 내가 지금까지 가지고있는 것입니다. DataSet의 모든 열을 반환합니다.

DataTable orders = dataSet.Tables[0]; 

EnumerableRowCollection<DataRow> query = from order in orders.AsEnumerable() 
            where order.Field<Int16>("OrderID") = 2 
            select order; 

DataView view = query.AsDataView(); 

내가 원하는 것은 쿼리가 일부 열만 반환한다는 것입니다. 나는 무엇을해야합니까? 귀하의 요청에

답변

4

사용 익명 형식 :

var filter = new DataView(orders); 
filter.RowFilter = "OrderID = 2"; 
var resultTable = filter.ToTable(false, "Column1", "Column2", "Column3"); 

ToTable() :

DataTable orders = dataSet.Tables[0]; 

EnumerableRowCollection<DataRow> query = from order in orders.AsEnumerable() 
            where order.Field<Int16>("OrderID") = 2 
            select new { Property1, Property2 }; 

DataView view = query.AsDataView(); 
+3

당신은'새 {속성 1 = order.Field ("OrderID를")를해야합니다 .. .}' –

+0

네가 맞아. 헨크. 내 코드가 완전하지 않아. –

0

어쩌면 당신이 실제로 DataView 자체의 기능을 사용하는 대신 로터리 정렬의 LINQ 솔루션을 사용하는 것이 좋습니다 메서드를 사용하면 임의의 열 목록을 지정하여 새 테이블을 만들 수 있습니다. 당신이 그 테이블 대신 반환해야하는 경우 물론 당신은 또 다른 DataView를에서 결과 테이블을 포장 할 수 있습니다

var resultView = new DataView(resultTable);