Linq查询列出VB.NET

ser*_*hio 4 .net linq vb.net

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

Dim myProperties As List(Of String) = query.ToList????? 'no way!!!'
Run Code Online (Sandbox Code Playgroud)

"query"类型是IEnumerable(Of String)

我试图query直接使用(infragistic)组合框的数据源,但它抛出了NullReferenceException,所以我决定将它转换为一个字符串列表,成为一个更"经典"的数据源.

Dim values As List(Of String) = query.AsQueryable().ToList()
Run Code Online (Sandbox Code Playgroud)

也不起作用:类型'System.Collections.Generic.List(Of System.Linq.IQueryable(Of String))'的值不能转换为'System.Collections.Generic.List(Of String)'.

Ree*_*sey 12

您的错误消息表明query实际上是List(Of T)内部包含集合.

如果是这种情况,您可以使用SelectMany以展平集合:

Dim values As List(Of String) = query.SelectMany(Function(m) m).ToList()
Run Code Online (Sandbox Code Playgroud)

编辑:鉴于您的编辑,以及评论,以下应该工作正常:

Dim values As List(Of String) = query.ToList()
Run Code Online (Sandbox Code Playgroud)