Solved

Linq to XML Using Visual Basic

Posted on 2012-04-06
4
485 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

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
VB.NET 1 22
asp enable view state 1 24
How to parse the string and split the sub directory names in asp.net 7 41
Help with preventing downloading a zip file 10 37
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

770 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