Linq db.tableUserDefinedVariable - Как? - PullRequest
0 голосов
/ 04 февраля 2012

Как правильно получить таблицу базы данных с пользовательской переменной? Я подумал, что это было бы довольно просто ...

// Я знаю, что встроенные комментарии плохи, терпите меня здесь ..

string sDDL1 = DropDownList1.SelectedValue; // sDDL1 = "tableX"

string sDDL2 = DropDownList2.SelectedValue; // sDDL2 = "9000"

string sDDL3 = DropDownList3.SelectedValue; // sDDL3 = "p.PK_XID"

// Закодировано, все работает.

    dbDataContext  myDB =  new dbDataContext();


    var dynamicQuery = from p in myDB.tableX 
                       where p.PK_XID == 9000
                       select p;

// Заданные пользователем данные берутся на myDB.sDDL1. Если я жестко закодирую myDB.sDDL1 вместо myDB.tableX, запрос будет выполнен.

    dbDataContext  myDB =  new dbDataContext();


    var dynamicQuery = from p in myDB.sDDL1 //myDB.tableX instead, runs just fine...
                       where sDD3 == sDD2
                       select p;

Ошибка: «dbDataContext» не содержит определения для «sDDL1» и не имеет метода расширения «sDDL1», принимающего первый аргумент типа «dbDataContext» (у вас отсутствует директива using или ссылка на сборку?)

Из того, что я понимаю, ошибка говорит мне, что в базе данных нет такой таблицы "sDDL1", но sDDL1 - это переменная ... не должна быть myDB. захватить значение переменной?

1 Ответ

0 голосов
/ 05 февраля 2012

В этом сценарии вам нужно будет отразить и выполнить GetProperty, чтобы получить конкретную таблицу, а затем привести ее к фактическому типу таблицы, чтобы остальная часть запроса работала нормально.

Возможно, вы захотите взглянуть на библиотеку DynamicQuery или что-то подобное.

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...