2011-05-14 165 views
0

我有一個充滿訂單信息的數據集,我試圖用DataView過濾數據集。C# - 使用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

使用匿名類型的查詢:

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

你需要'新{Property1 = order.Field (「訂單ID」),.. }' – 2011-05-14 14:59:24

+0

你說得對,我的代碼不完整 – 2011-05-15 08:32:29

0

也許你應該考慮實際使用DataView本身的能力,而不是使用迂迴排序的LINQ解決方案:

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

ToTable()方法允許你指定一個任意的列列表來創建一個新表。當然,你還可以換的結果表中另一數據視圖,如果你需要返回的是不是表:

var resultView = new DataView(resultTable);