1

My code :

 ProductRangesForNewRowsDt = ProductRangesDt.Select("PRODUCT_NAME, MIN_QUANTITY, MAX_QUANTITY, COMISSION_TEMPLATE where PROVIDER_ID = " + PROVIDER_ID).CopyToDataTable();

where ProductRangesForNewRowsDt is a DataTable and ProductRangesDt is another DataTable that contains these columns:

PRODUCT_ID
PRODUCT_NAME
PROVIDER_ID.PROVIDER_NAME
MIN_QUANTITY
MAX_QUANTITY
COMISSION_TEMPLATE

I am getting this error :

Syntax error in the expression.

4

1 回答 1

6

DataTable.Select返回一个数组,因此如果DataRow您的列存在于您DataTable的列中,那么无论如何您都将返回该行中的所有列。.Selectis 与子句一起使用,因此WHERE您可以执行以下操作:

DataRow[] rows = ProductRangesDt.Select("PROVIDER_ID = " + PROVIDER_ID);

然后使用您喜欢的任何方法将这些行放入目标数据表中。

要仅获取所需的列,则应DataView从数据表中派生 a,将其复制到另一个数据表并查询此新集合。

DataView view = new DataView(ProductRangesDt);
DataTable dtQueryTable = view.ToTable(false, new string[] { "PROVIDER_ID", "PRODUCT_NAME", "MIN_QUANTITY", "MAX_QUANTITY", "COMISSION_TEMPLATE" });

DataRow[] rows = dtQueryTable.Select("PROVIDER_ID = " + PROVIDER_ID);

刚刚重新阅读了这篇文章,你也可以用另一种方式来做。查询你有什么,为你的新过滤集制作一个数据表,然后使用 aDataView提取你想要的列。

编辑

获取所需的列,请尝试其他方式

DataTable dtFiltered = ProductRangesDt.Select("PROVIDER_ID = " + PROVIDER_ID).CopyToDataTable();

DataView view = new DataView(dtFiltered);
DataTable dtSpecificCols = view.ToTable(false, new string[] { "PRODUCT_NAME", "MIN_QUANTITY", "MAX_QUANTITY", "COMISSION_TEMPLATE" });

以上未经测试,只是一个快速的回复。

于 2013-04-25T10:13:27.133 回答