Solved

Linq to XML Using Visual Basic

Posted on 2012-04-06
4
484 Views
Last Modified: 2012-04-06
How do I use Linq to get a list of countries that start with the letter 'B'?

Here's the data:

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="Table1">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="ID" type="xs:int" minOccurs="0" />
                <xs:element name="CountryName" minOccurs="0">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:maxLength value="255" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <Table1>
    <ID>1</ID>
    <CountryName>Afghanistan</CountryName>
  </Table1>
  <Table1>
    <ID>2</ID>
    <CountryName>Albania</CountryName>
  </Table1>
  <Table1>
    <ID>3</ID>
    <CountryName>Algeria</CountryName>
  </Table1>
  <Table1>
    <ID>4</ID>
    <CountryName>Andorra</CountryName>
  </Table1>
  <Table1>
    <ID>5</ID>
    <CountryName>Angola</CountryName>
  </Table1>
  <Table1>
    <ID>6</ID>
    <CountryName>Antigua and Barbuda</CountryName>
  </Table1>
  <Table1>
    <ID>7</ID>
    <CountryName>Argentina</CountryName>
  </Table1>
  <Table1>
    <ID>8</ID>
    <CountryName>Armenia</CountryName>
  </Table1>
  <Table1>
    <ID>9</ID>
    <CountryName>Australia</CountryName>
  </Table1>
  <Table1>
    <ID>10</ID>
    <CountryName>Austria</CountryName>
  </Table1>
  <Table1>
    <ID>11</ID>
    <CountryName>Azerbaijan</CountryName>
  </Table1>
  <Table1>
    <ID>12</ID>
    <CountryName>Bahrain</CountryName>
  </Table1>
  <Table1>
    <ID>13</ID>
    <CountryName>Bangladesh</CountryName>
  </Table1>
  <Table1>
    <ID>14</ID>
    <CountryName>Barbados</CountryName>
  </Table1>
  <Table1>
    <ID>15</ID>
    <CountryName>Belarus</CountryName>
  </Table1>
  <Table1>
    <ID>16</ID>
    <CountryName>Belgium</CountryName>
  </Table1>
  <Table1>
    <ID>17</ID>
    <CountryName>Belize</CountryName>
  </Table1>
  <Table1>
    <ID>18</ID>
    <CountryName>Benin</CountryName>
  </Table1>
  <Table1>
    <ID>19</ID>
    <CountryName>Bhutan</CountryName>
  </Table1>
  <Table1>
    <ID>20</ID>
    <CountryName>Bolivia</CountryName>
  </Table1>
  <Table1>
    <ID>21</ID>
    <CountryName>Bosnia and Herzegovina</CountryName>
  </Table1>
  <Table1>
    <ID>22</ID>
    <CountryName>Botswana</CountryName>
  </Table1>
  <Table1>
    <ID>23</ID>
    <CountryName>Brazil</CountryName>
  </Table1>
  <Table1>
    <ID>24</ID>
    <CountryName>Brunei</CountryName>
  </Table1>
  <Table1>
    <ID>25</ID>
    <CountryName>Bulgaria</CountryName>
  </Table1>
  <Table1>
    <ID>26</ID>
    <CountryName>Burkina Faso</CountryName>
  </Table1>
  <Table1>
    <ID>27</ID>
    <CountryName>Burundi</CountryName>
  </Table1>
  <Table1>
    <ID>28</ID>
    <CountryName>Cambodia</CountryName>
  </Table1>
  <Table1>
    <ID>29</ID>
    <CountryName>Cameroon</CountryName>
  </Table1>
  <Table1>
    <ID>30</ID>
    <CountryName>Canada</CountryName>
  </Table1>
 </NewDataSet>
0
Comment
Question by:Ray Turner
  • 2
  • 2
4 Comments
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
ID: 37817642
Here is one example:

Module Module1

    Sub Main()
        Dim query = From country In System.Xml.Linq.XDocument.Load("input.xml").Descendants("CountryName") _
                    Where country.Value.StartsWith("B") _
                    Select country.Value

        For Each countryName In query
            Console.WriteLine(countryName)
        Next

        Console.ReadKey()
    End Sub

End Module

Open in new window

0
 

Author Comment

by:Ray Turner
ID: 37817764
I got following error.  How do I fix?

Expression of type 'System.Collections.Generic.IEnumerable(Of System.Xml.Linq..XElement)' is not queryable
0
 
LVL 75

Assisted Solution

by:käµfm³d 👽
käµfm³d   👽 earned 500 total points
ID: 37817974
Sorry about that. Add Imports System.Linq to the top of your file.
0
 

Author Closing Comment

by:Ray Turner
ID: 37818145
Thanks!!!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.
As a trusted technology advisor to your customers you are likely getting the daily question of, ‘should I put this in the cloud?’ As customer demands for cloud services increases, companies will see a shift from traditional buying patterns to new…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now