Wo ist die ToList () - Methode? (IQueryable)
Wenn ich es versuchen, es wird funktionieren:
var query = myContextObject.Users.Where(u=>u.Name == "John");
query.ToList();
Ich bin in der Lage zu nennen ToList
und viele andere Verlängerung Methoden.
Aber wenn ich es versuchen:
public List ConvertQueryToList(IQueryable query)
{
return query.ToList();
}
ToList
nicht erreichbar, ich vermute, das ist, weil ToList
ist eine Erweiterung Methode, aber dann wie ist, dass ToList
befestigt ist, in dem ersten Beispiel?
Ist es möglich, den Zugriff auf ToList
im zweiten Fall?
Hinweis:
var query
!= iQueryable query
.InformationsquelleAutor marcos.borunda | 2012-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie es schreiben als:
Dadurch wird die
IQueryable<T>
zur Rückgabe der entsprechendenList<T>
, da dieEnumerable.ToList()
Methode erfordert eineIEnumerable<T>
als Eingabe (die funktioniert auch mitIQueryable<T>
alsIQueryable<T>
erbtIEnumerable<T>
).Dass gesagt wird, es gibt wirklich keinen Grund, es auf diese Weise. Sie können immer rufen Sie einfach
ToList()
direkt, wenn Sie erstellen müssen eineList<T>
- Abstraktion innerhalb von einer zweiten Schicht nur verwirrt die API weiter.Wenn Sie versuchen, zu konvertieren, eine nicht-generische IQueryable - Schnittstelle, Sie benötigen so etwas wie:
Dies würde dann benötigen Sie den Aufruf wie:
Alternativ, wenn Sie möchten, lassen Sie dieses nicht-generische (die ich nicht empfehle), dann könntest du verwenden:
War nicht sicher, was genau Ihr Ziel war es, auf der Grundlage der Frage. Ich habe versucht, decken die drei wichtigsten Optionen hier, obwohl es nun Sinn machen?
sicher!!! tut es, danke!
Irgendwo zwischen den cast-Ansatz und die arraylist Ansatz ist
query.Cast<object>.ToList()
. Es ist im Grunde die Besetzung Ansatz, da aber alles umgewandelt werden kannobject
, es funktioniert mit jedemIQueryable
.Ja - du bekommst eine
List<object>
als Ergebnis, dann. Dachte ich auch, aber es schien eine seltsame Vorgehensweise, zuInformationsquelleAutor Reed Copsey
Den ersten deiner Beispiele gibt eine
IQueryable<T>
, in der Erwägung, dass in der zweiten sind Sie mitIQueryable
(ohne den Generischen Typ-parameter).Können Sie aus zwei völlig verschiedenen Schnittstellen hier und hier.
IQueryable
(nicht generischen) ist die dynamische linq-provider für Linq-To-SQL. Die dynamische linq-provider nimmt die Zeichenfolgen als Argumente, die es nicht haben eine Art, mit zu arbeiten.InformationsquelleAutor Jon Egerton
Hier ist eine Erweiterung Methode für diese:
InformationsquelleAutor Hamid Pourjam