2016-10-06 4 views
1

Ich versuche, LINQ-Abfrage auszuführen. Wie Sie aus dem folgenden Code sehen können, versuche ich, die Tabelle ("Tabellenname") zu benennen, bevor ich sie an LINQ übergebe, und natürlich kann LINQ keine Tabelle namens "Tabellenname" finden. Irgendein anderer Weg, um dies zu tun? Ich habe versucht, ctxdata. (TableName), hat aber nicht funktioniert.LINQ-Abfrage mit dynamischem Tabellenname ausführen

Ich bin immer noch ein Neuling auf C#, wirklich zu schätzen, wenn Sie mir Beispiel basierend auf diesem Code zeigen können.

+0

Vielleicht diese Frage (und die verknüpften Fragen) helfen http://stackoverflow.com/questions/28099435/dynamic-table- Name-in-linq – robor78

Antwort

0

Sie können Tabelle von Datenkontext mit Set Methode erhalten, aber Sie brauchen Art von seinen Elementen wie generische Parameter Set<T>() oder nur Type Variable Set(Type type). Sie müssen also einen Weg finden, den Typ nach Tabellennamen zu erhalten. Wenn Sie einen Typnamen haben, können Sie den Typ nach Namen aus der Assembly ctxdata.GetType().Assembly.GetType("TypeName") erhalten.

Mit Reflexion können Sie Tabelleneigenschaft von Datenkontext wie diese:

var table = ctxdata.GetType().GetProperty(TableName).GetValue(ctxdata) as IQueryable;