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 generischenIQueryable
existiert diese Methode nicht.
Das ist weilToList
ist vererbt vonIEnumerable<T>
welcheIQueryable<T>
erbt undIQueryable
offensichtlich 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.