cmurda
cmurda

Reputation: 3

Using a LINQ query to populate a combo box with data from an access database

In VB.Net:

I am trying to populate a combo box on my form using data from a MS Access database. Specifically; taking all of the last names from the database, sorting them in ascending order in an output list which I named players and then adding each item in players to my combo box (cboPlayer).

 Public Sub GetPlayers()

    Dim PlayerLastName As New List(Of String)
    PlayerLastName.Add("Smith")
    PlayerLastName.Add("Hill")
    PlayerLastName.Add("Beyer")
    PlayerLastName.Add("Wilson")
    PlayerLastName.Add("Hudson")
    PlayerLastName.Add("van Zegeren")
    PlayerLastName.Add("Bibbs")
    PlayerLastName.Add("Muller")
    PlayerLastName.Add("Pierce")
    PlayerLastName.Add("Henry")
    PlayerLastName.Add("Johnston")

Dim Players = From Last In PlayerLastName
                    Order By Last Ascending
                    Select Last

    cboPlayer.Items.Add(Players.ToString)
    cboPlayer.SelectedItem = 0

I know this isn't exactly correct but not positive what direction to head in. When I run the program the combo box is populated with System.linq.enumerated.

Any ideas what that might mean or what I am doing incorrectly?

Upvotes: 0

Views: 2348

Answers (1)

JStevens
JStevens

Reputation: 2152

Maybe over thinking it just a little? Why not try without the linq, List has a sort function. Also just bind PlayerLastName to the combobox.

    Public Sub GetPlayers()

        Dim PlayerLastName As New List(Of String)
        PlayerLastName.Add("Smith")
        PlayerLastName.Add("Hill")
        PlayerLastName.Add("Beyer")
        PlayerLastName.Add("Wilson")
        PlayerLastName.Add("Hudson")
        PlayerLastName.Add("van Zegeren")
        PlayerLastName.Add("Bibbs")
        PlayerLastName.Add("Muller")
        PlayerLastName.Add("Pierce")
        PlayerLastName.Add("Henry")
        PlayerLastName.Add("Johnston")

        PlayerLastName.Sort()    

        cboPlayers.DataSource = PlayerLastName
        cboPlayers.SelectedIndex = -1

     End sub

Edit:

or if you still want to us linq then, you need to change the linq return of IEnumerable to a List...

Dim Players = From Last In PlayerLastName
                        Order By Last Ascending
                        Select Last

ComboBox1.DataSource = Players.ToList
ComboBox1.SelectedIndex = -1

Upvotes: 1

Related Questions