IZu Liste abfragbar

Ich benutzeSystem.Linq.Dynamic Damit ich eine Liste von Feldern aus einer Abfrage wie der folgenden dynamisch auswählen kann:

finalQuery = query.Select(string.Format("new({0})", string.Join(",", selectors)));

Woselectors ist nur einList<string> mit all den Feldern, die ich will. Das funktioniert prima, aber diese Version der ErweiterungsmethodeSelect gibt ein zurückIQueryable. Nicht das istnicht IQueryable<T>. Wenn ich eine habeIQueryable<T> Ich kann einfach eine machen.ToList() Konvertieren Sie es in eine Liste und erzwingen Sie, dass die Abfrage tatsächlich in der Datenbank ausgeführt wird, jedoch mit der nicht generischenIQueryableexistiert diese Methode nicht.

Das ist weilToList ist vererbt vonIEnumerable<T> welcheIQueryable<T> erbt undIQueryableoffensichtlich nicht.

Also, was ist der effizienteste Weg, um eine zu bekommen?IQueryable die Abfrage ausführen und mir eine Liste zurückgeben? Ich kann dies tun:

List<object> rtn = new List<object>();
foreach (var o in finalQuery)
{
    rtn.Add(o);
}

Aber es scheint so, als ob ihr Weg einfacher sein sollte.

Edit: Als Antwort auf Vorschläge habe ich beide ausprobiert:

finalQuery.Cast<object>().ToList();

und:

finalQuery.Cast<dynamic>().ToList();

Was beide gebenNotSupportedExceptions mit der Nachricht:

Unable to cast the type 'DynamicClass1' to type 'System.Object'. LINQ to Entities 
only supports casting EDM primitive or enumeration types.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage