从DataTable中选择多个列

时间:2013-04-25 10:09:12

标签: c#

我的代码:

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

其中ProductRangesForNewRowsDtDataTableProductRangesDt是包含这些列的另一个DataTable

PRODUCT_ID
PRODUCT_NAME
PROVIDER_ID.PROVIDER_NAME
MIN_QUANTITY
MAX_QUANTITY
COMISSION_TEMPLATE

我收到此错误:

  

表达式中的语法错误。

1 个答案:

答案 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" });

以上未经过测试,只是快速回复。