Получите данные таблицы из имени таблицы в LINQ DataContext

Я должен получить данные таблицы из имени таблицы от Linq DataContext.

Вместо этого

var results = db.Authors;

Я должен сделать что-то вроде этого.

string tableName = "Authors";

var results = db[tableName];

Это могло быть любое имя таблицы, которое доступно в DataContext.

14
задан Krunal 8 July 2010 в 15:54
поделиться

3 ответа

Учитывая контекст DataContext и строку tableName , вы можете просто сказать:

var table = (ITable)context.GetType()
                           .GetProperty(tableName)
                           .GetValue(context, null);
15
ответ дан 1 December 2019 в 12:38
поделиться

Я не уверен, что передача строк является элегантным решением. Я бы предпочел отправить тип объекта в качестве аргумента метода. Что-то вроде этих строк:

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

Здесь документация MSDN.

4
ответ дан 1 December 2019 в 12:38
поделиться

Я не уверен, что предлагаю это как ХОРОШЕЕ решение, но если оно вам действительно нужно, вы можете сделать что-то вроде этого:

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

Это даст вам таблицу авторов , как пр. Таблица.

3
ответ дан 1 December 2019 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: