Linq query to list VB.NET

26,559

Solution 1

Finally, solved with good old method : )

  Dim values As New List(Of String)

  For Each item In query
    values.Add(item)
  Next item

Solution 2

Your error message suggests the query is actually a List(Of T) containing a collection internally.

If this is the case, you can use SelectMany to flatten the collection:

Dim values As List(Of String) = query.SelectMany(Function(m) m).ToList()

Edit: Given your edit, as well as the comment, the following should work fine:

Dim values As List(Of String) = query.ToList()

Solution 3

Perhaps you should try to specify the type on the query variable?

Dim query = From o In myContainer.MyObjects Select o.MyStringProperty Distinct

Should become

Dim query As IEnumerable(Of String) = From o In myContainer.MyObjects Select o.MyStringProperty Distinct

If the type of IEnumerable(Of String) can't be used on query, then you need to flatten the list as Reed Copsey said.

Share:
26,559
serhio
Author by

serhio

I like .NET and started learning PHP. email: gserhio[at]gmail[.]com

Updated on July 09, 2022

Comments

  • serhio
    serhio almost 2 years
    Dim query = From o In myContainer.MyObjects Select o.MyStringProperty Distinct
    
    Dim myProperties As List(Of String) = query.ToList????? 'no way!!!'
    

    "query" type is IEnumerable(Of String)

    I tried to use the query directly as a DataSource of a (infragistic) combobox, but it throws me NullReferenceException, so I decided to convert it to a listof strings, to be a more "classical" datasource.

    Dim values As List(Of String) = query.AsQueryable().ToList()
    

    does not work either: Value of type 'System.Collections.Generic.List(Of System.Linq.IQueryable(Of String))' cannot be converted to 'System.Collections.Generic.List(Of String)'.