Linq-Abfrage, um die Liste VB.NET
Dim query = From o In myContainer.MyObjects Select o.MyStringProperty Distinct
Dim myProperties As List(Of String) = query.ToList????? 'no way!!!'
"Abfrage" - Typ IEnumerable(Of String)
Ich habe versucht, die query
direkt als DataSource eines (infragistic) combobox, aber es wirft mich NullReferenceException, so dass ich beschloss, es zu konvertieren, um eine listof Streicher, zu einem "klassischen" datasource.
Dim values As List(Of String) = query.AsQueryable().ToList()
nicht funktionieren: Wert vom Typ " System.Sammlungen.Generisches.List(Of System.Linq -.IQueryable(Of String)) "kann nicht in" System.Sammlungen.Generisches.List(Of String)'.
Stellen Sie sicher, dass Option Strict On. Wenn Sie Option Strengen Off haben, Ihre Abfrage kann infering das Ergebnis als IEnumerable(Of Object) anstatt als string und ToList nicht Gießen Sie Sie ordnungsgemäß. Andernfalls entfernen Sie den As List(Of String) und sehen, welche Art Leitlinien gibt. Ich vermute, Sie haben einen impliziten cast geschieht irgendwo, dass der compiler versteckt.
InformationsquelleAutor serhio | 2011-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deine Fehlermeldung deutet die
query
ist eigentlich einList(Of T)
mit einer Sammlung intern.Wenn dies der Fall ist, können Sie
SelectMany
zum glätten der Sammlung:Edit: Angesichts Ihrer Bearbeitung, sowie der Kommentar, die folgende sollte gut funktionieren:
mmm - wenn das der Fall ist, dann
.ToList()
sollte funktionieren.Bearbeitet meine Antwort - das ist effektiv das gleiche wie das, was Sie tun, in die "gute alte Methode"...
Als ich indicatd in der post, die eine solche Methode existiert nicht. ToList, weil "Abfrage" ist IEnumerable(Of String)
Die LINQ-extension-Methode
Enumerable.ToList
funktioniert gut auf einemIEnumerable(Of String)
. Ihre erste version sollte funktionieren.InformationsquelleAutor Reed Copsey
Vielleicht sollten Sie versuchen, den Typ angeben, auf der query-variable?
Werden sollte
Wenn der Typ IEnumerable(Of String) kann nicht verwendet werden, die auf die Abfrage, dann müssen Sie reduzieren Sie die Liste als Reed Copsey sagte.
InformationsquelleAutor avanek
Schließlich gelöst mit der guten alten Methode : )
Mach dir keine sorgen! Bis Stimmen zeigen das Ergebnis 🙂
Sicher, aber die Tatsache bleibt, dies ist die falsche Antwort.
Dies ist, was ich sage. Bis Stimmen sind aufschlussreich, was ist die richtige Antwort 🙂
InformationsquelleAutor serhio