我有一个包含订单信息的数据集,我正在尝试使用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();
我想要做的是查询只返回一些列而不是所有列。我该怎么办?
答案 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);