我有一个从多维数据集填充的 DataTable,其列名声明为:
[措施].[库存数量]
DataTable 正确填充,但是当尝试使用 RowFilter 应用时:
“[措施].[库存数量] >= 2000”
我收到以下错误:
“[Measures.StockQty] 未找到
我也尝试只使用列名:
“[库存数量] >= 2000”
但这也因未找到错误而失败。
是否可以使用包含句点的列名来过滤 DataTable,如果可以,如何?
你为什么要使用RowFilter
?如果您使用的是 .NET 3.5 或更高版本,我建议您改用 Linq-To-DataTable,它更强大且可读性更强:
IEnumerable<DataRow> filteredRows = tblMeasures.AsEnumerable()
.Where(r => r.Field<int>("Stock Qty") >= 2000);
如果您DataTable
再次需要:
DataTable tblFiltered = filteredRows.CopyToDataTable();
顺便说一句,如果您的最后一种方法中的列名称DataTable
应该"Stock Qty"
可以工作,因为您需要将其括在括号中。
tblMeasures.DefaultView.RowFilter = "[Stock Qty] >= 2000";
所以你应该使用调试器来查看列的真实名称和类型。
您可以重命名数据表列(用“_”替换句点)&他们尝试行过滤器。
例如。:
dataTable.Columns["Stock Qty"].ColumnName =
dataTable.Columns["Stock Qty"].ColumnName.Replace(" ", "_");