从LINQ DataContext中的表名获取表数据

我需要从Linq DataContext的表名获取表数据。

而不是这个

var results = db.Authors; 

我需要做这样的事情。

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

它可以是DataContext中可用的任何表名。

给定DataContext contextstring tableName ,你可以说:

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

我不知道如果传递string是一个优雅的解决scheme。 我宁愿将实体types作为参数发送给方法。 这些线上的东西:

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

这是MSDN文档。

我不知道我会build议它作为一个好的解决scheme,但如果你真的需要它,你可以做这样的事情:

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

这会给你的作者表,作为公关。 表。

如果你知道这个types,你可以投它。 从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); } }