1

我有一个从多维数据集填充的 DataTable,其列名声明为:

[措施].[库存数量]

DataTable 正确填充,但是当尝试使用 RowFilter 应用时:

“[措施].[库存数量] >= 2000”

我收到以下错误:

“[Measures.StockQty] 未找到

我也尝试只使用列名:

“[库存数量] >= 2000”

但这也因未找到错误而失败。

是否可以使用包含句点的列名来过滤 DataTable,如果可以,如何?

4

2 回答 2

1

你为什么要使用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";

所以你应该使用调试器来查看列的真实名称和类型。

于 2012-12-19T08:36:31.403 回答
1

您可以重命名数据表列(用“_”替换句点)&他们尝试行过滤器。

例如。:

dataTable.Columns["Stock Qty"].ColumnName = 
                 dataTable.Columns["Stock Qty"].ColumnName.Replace(" ", "_");
于 2012-12-19T08:36:39.253 回答