C# 如何过滤数据集中的数据行?

C# 如何过滤数据集中的数据行?,c#,vb.net,C#,Vb.net,我有一个 <DATASET> <SALES_DO_INDEPENDENT> <SALES_DO_INDEPENDENT_ID>22</SALES_DO_INDEPENDENT_ID> <DO_CODE>1234</DO_CODE> <SALES_DO_STATUS_ID>1</SALES_DO_STATUS_ID> <COM

我有一个

<DATASET>
    <SALES_DO_INDEPENDENT>
        <SALES_DO_INDEPENDENT_ID>22</SALES_DO_INDEPENDENT_ID>
        <DO_CODE>1234</DO_CODE>
        <SALES_DO_STATUS_ID>1</SALES_DO_STATUS_ID>
        <COM_CUSTOMER_ID>1</COM_CUSTOMER_ID>
        <COM_PRODUCT_ID>9</COM_PRODUCT_ID>
        <COM_TRANSPORT_COMPANY_ID>8</COM_TRANSPORT_COMPANY_ID>
        <SHIPPING_DATE>28/07/2011 0:00:00</SHIPPING_DATE>
        <SHIPPING_ADDRESS>SS</SHIPPING_ADDRESS>
        <DO_DESCR>SS</DO_DESCR>
        <TRANSPORT_LICENSE_CODE>123</TRANSPORT_LICENSE_CODE>
        <COM_USER_ID>1</COM_USER_ID>
        <IS_SYNCHRONIZED>False</IS_SYNCHRONIZED>
        <IS_SAMPLE>False</IS_SAMPLE>
        <COM_WAREHOUSE_ID>3</COM_WAREHOUSE_ID>
      </SALES_DO_INDEPENDENT>

      <SALES_DO_INDEPENDENT>
        <SALES_DO_INDEPENDENT_ID>11</SALES_DO_INDEPENDENT_ID>
        <DO_CODE>1234</DO_CODE>
        <SALES_DO_STATUS_ID>1</SALES_DO_STATUS_ID>
        <COM_CUSTOMER_ID>1</COM_CUSTOMER_ID>
        <COM_PRODUCT_ID>9</COM_PRODUCT_ID>
        <COM_TRANSPORT_COMPANY_ID>8</COM_TRANSPORT_COMPANY_ID>
        <SHIPPING_DATE>28/07/2011 0:00:00</SHIPPING_DATE>
        <SHIPPING_ADDRESS>SS</SHIPPING_ADDRESS>
        <DO_DESCR>SS</DO_DESCR>
        <TRANSPORT_LICENSE_CODE>123</TRANSPORT_LICENSE_CODE>
        <COM_USER_ID>1</COM_USER_ID>
        <IS_SYNCHRONIZED>False</IS_SYNCHRONIZED>
        <IS_SAMPLE>False</IS_SAMPLE>
        <COM_WAREHOUSE_ID>3</COM_WAREHOUSE_ID>
      </SALES_DO_INDEPENDENT>
    </DATASET>

22
1234
1.
1.
9
8.
28/07/2011 0:00:00
党卫军
党卫军
123
1.
假的
假的
3.
11
1234
1.
1.
9
8.
28/07/2011 0:00:00
党卫军
党卫军
123
1.
假的
假的
3.
如何在SALES\u DO\u INDEPENDENT\u ID=11的数据集中获取数据行 我是说结果

<DATASET>
  <SALES_DO_INDEPENDENT>
    <SALES_DO_INDEPENDENT_ID>11</SALES_DO_INDEPENDENT_ID>
    <DO_CODE>1234</DO_CODE>
    <SALES_DO_STATUS_ID>1</SALES_DO_STATUS_ID>
    <COM_CUSTOMER_ID>1</COM_CUSTOMER_ID>
    <COM_PRODUCT_ID>9</COM_PRODUCT_ID>
    <COM_TRANSPORT_COMPANY_ID>8</COM_TRANSPORT_COMPANY_ID>
    <SHIPPING_DATE>28/07/2011 0:00:00</SHIPPING_DATE>
    <SHIPPING_ADDRESS>SS</SHIPPING_ADDRESS>
    <DO_DESCR>SS</DO_DESCR>
    <TRANSPORT_LICENSE_CODE>123</TRANSPORT_LICENSE_CODE>
    <COM_USER_ID>1</COM_USER_ID>
    <IS_SYNCHRONIZED>False</IS_SYNCHRONIZED>
    <IS_SAMPLE>False</IS_SAMPLE>
    <COM_WAREHOUSE_ID>3</COM_WAREHOUSE_ID>
  </SALES_DO_INDEPENDENT>
</DATASET>

11
1234
1.
1.
9
8.
28/07/2011 0:00:00
党卫军
党卫军
123
1.
假的
假的
3.
提前谢谢

问候,, 尤桑·苏珊迪

试试这个:

Dim selectedRows As DataRow() = yourDataSet.Tables(0).Select("SALES_DO_INDEPENDENT_ID = 11")

注意,
Select
方法针对的是DataTable,而不是DataSet。此示例假定每个旧ADO.NET都有一个普通的DataSet/DataTable。

您也可以使用XPath。一种方式是通过:

另一种方法是使用:

您可以从datatable和筛选器中创建一个:

Dim dv As New DataView(dt)
dv.RowFilter = "SALES_DO_INDEPENDENT_ID = 11"
For r As Integer = 0 To dv.Count - 1
     Debug.WriteLine(dv(r).Item("DO_CODE").ToString) 'etc
Next

我觉得这有点奇怪,因为通常数据集中有表,表中有行。这是一个普通的ADO.NET数据集还是您自己的混合物?
root.SelectSingleNode("/DATASET/SALES_DO_INDEPENDENT[SALES_DO_INDEPENDENT_ID=11]");
Dim dv As New DataView(dt)
dv.RowFilter = "SALES_DO_INDEPENDENT_ID = 11"
For r As Integer = 0 To dv.Count - 1
     Debug.WriteLine(dv(r).Item("DO_CODE").ToString) 'etc
Next