C# - 使用DataView过滤

时间:2011-05-14 14:30:56

标签: c# linq datatable dataset

我有一个包含订单信息的数据集,我正在尝试使用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();

我想要做的是查询只返回一些列而不是所有列。我该怎么办?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

也许你应该考虑实际使用DataView本身的功能,而不是使用一种迂回的LINQ解决方案:

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

ToTable()方法允许您指定任意列列表以从中创建新表。当然,如果需要返回结果表而不是表,您仍然可以将结果表包装在另一个DataView中:

var resultView = new DataView(resultTable);