Страницы

Поиск по вопросам

пятница, 15 марта 2019 г.

Как передать имя таблицы в функцию как параметр?

Я использую Entity Framework. Есть некая функция, в которой происходит заполнение dataGridView данными из таблицы.
private void data() { using (Context context = new Context()) { var items = from Items in context.Table1 select Items;
dataGridView1.DataSource = items.ToList(); } }
Но я хочу сделать универсальную функцию, чтобы имя таблицы передавалось через параметр. Подскажите, как нужно модифицировать функцию, чтобы это стало возможным?
Что-то типа этого:
void Test() { data(tbl1); data(tbl2); }
private void data(SomeType tableName) { using (Context context = new Context()) { var items = from Items in tableName select Items;
dataGridView1.DataSource = items.ToList(); } }


Ответ

Если тип сущностей в таблицах одинаковый, то можно попробовать спустить функцию для выбора таблицы параметром:
void Test() { data(c => c.tbl1); data(c => c.tbl2); }
private void data(Func> tableSelector) { using (Context context = new Context()) { var items = from Items in tableSelector(context) select Items;
dataGridView1.DataSource = items.ToList(); } }
Если разный - добавьте генерик-параметр
private void data(Func> tableSelector) { using (Context context = new Context()) { var items = from Items in tableSelector(context) select Items;
dataGridView1.DataSource = items.ToList(); } }
в живую не проверял, возможны опечатки
Если нужно передавать имя таблицы именно как строку - придётся использовать reflection. Постарайтесь избегать этого :)

Комментариев нет:

Отправить комментарий