2011-08-01 42 views
0

我有一樣的數據集如何過濾數據集中的數據列?

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

如何獲得數據集中的數據行與SALES_DO_INDEPENDENT_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> 

感謝

問候, 玉山Susandi。

+0

這看起來有點奇怪我,通常你在數據集中有* tables *,在表內有* rows *。這是一個正常的ADO.NET數據集或您自己的調製? –

回答

0

試試這個:

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

注意Select方法對操作數據表,而不是數據集。這個例子假定一個正常的DataSet/DataTable是每個好的ADO.NET。

1

您也可以使用XPath。一種方式是通過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 
} 

另一種方法是使用XmlNode.SelectSingleNode()

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

你可以創建你的數據表中的dataview和篩選:

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