我的代码:
ProductRangesForNewRowsDt = ProductRangesDt.Select("PRODUCT_NAME, MIN_QUANTITY, MAX_QUANTITY, COMISSION_TEMPLATE where PROVIDER_ID = " + PROVIDER_ID).CopyToDataTable();
其中ProductRangesForNewRowsDt
是DataTable
而ProductRangesDt
是包含这些列的另一个DataTable
:
PRODUCT_ID
PRODUCT_NAME
PROVIDER_ID.PROVIDER_NAME
MIN_QUANTITY
MAX_QUANTITY
COMISSION_TEMPLATE
我收到此错误:
表达式中的语法错误。
答案 0 :(得分:6)
DataTable.Select
会返回DataRow
数组,因此假设您的列存在于DataTable
中,那么无论如何您都会返回该行中的所有列。 .Select
将与WHERE
子句一起使用,因此您可以执行以下操作:
DataRow[] rows = ProductRangesDt.Select("PROVIDER_ID = " + PROVIDER_ID);
然后使用您喜欢的任何方法将这些行放入目标数据表中。
要获取所需的列,您应该从数据表中派生DataView
,将其复制到另一个数据表并查询这个新集。
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);
重新阅读此内容,您也可以采用其他方式。查询您拥有的内容,制作新过滤集的数据表,然后使用DataView
提取所需的列。
修改强>
要获取 所需的列,请尝试其他方式
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" });
以上未经过测试,只是快速回复。