Ottieni i dati della tabella dal nome della tabella in LINQ DataContext

Ho bisogno di ottenere i dati della tabella dal nome della tabella da Linq DataContext.

Invece di questo

var results = db.Authors; 

Devo fare qualcosa di simile.

 string tableName = "Authors"; var results = db[tableName]; 

Potrebbe essere qualsiasi nome di tabella disponibile in DataContext.

Dato il DataContext context e string tableName , puoi semplicemente dire:

 var table = (ITable)context.GetType() .GetProperty(tableName) .GetValue(context, null); 

Non sono sicuro che passare le corde sia una soluzione elegante. Preferirei inviare il tipo di quadro come argomento a un metodo. Qualcosa su queste linee:

 var table = _dataCont.GetTable(typeof(Customer)); 

Ecco la documentazione MSDN.

Non sono sicuro che lo suggerirei come una buona soluzione, ma se proprio ne hai bisogno, potresti fare qualcosa del genere:

 MyDBContext db = new MyDBContext(); Type t = db.GetType(); PropertyInfo p = t.GetProperty("Authors"); var table = p.GetValue(db, null); 

Questo ti darà la tabella degli autori, come pr. Tavolo.

Se conosci il tipo, puoi scriverlo. Da http://social.msdn.microsoft.com/Forums/en-US/f5e5f3c8-ac3a-49c7-8dd2-e248c8736ffd/using-variable-table-name-in-linq-syntax?forum=linqprojectgeneral

 MyDataContext db = new MyDataContext(); Assembly assembly = Assembly.GetExecutingAssembly(); Type t = assembly.GetType("Namespace." + strTableName); if (t != null) { var foos = db.GetTable(t); foreach (var f in foos) { PropertyInfo pi = f.GetType().GetProperty("Foo"); int value = (int)pi.GetValue(f, null); Console.WriteLine(value); } }