Yusan Susandi
Yusan Susandi

Reputation: 229

How To Filter Datarow in Dataset?

I have dataset like

<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>

How to get datarows in dataset with SALES_DO_INDEPENDENT_ID = 11 i mean result

<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>

Thanks in Advance

Regards, Yusan Susandi.

Upvotes: 0

Views: 1571

Answers (3)

Matt Wilko
Matt Wilko

Reputation: 27322

You could create a dataview from your datatable and filter that:

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

Upvotes: 0

Alex R.
Alex R.

Reputation: 4754

You can also use XPaths. One way is via XPathNavigator:

XPathNavigator xpath = xmlDoc.CreateNavigator();

XPathNodeIterator xiter = xpath.Select("/DATASET/SALES_DO_INDEPENDENT[SALES_DO_INDEPENDENT_ID=11]");

while (xiter.MoveNext())
{
    // do something with the values
}

Another way is using XmlNode.SelectSingleNode():

root.SelectSingleNode("/DATASET/SALES_DO_INDEPENDENT[SALES_DO_INDEPENDENT_ID=11]");

Upvotes: 1

Tim
Tim

Reputation: 28530

Try this:

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

Note the Select method operates against DataTable, not DataSet. This examples assume a normal DataSet/DataTable per good old ADO.NET.

Upvotes: 0

Related Questions