Выбрать колонку динамически с помощью LINQ? - PullRequest
1 голос
/ 27 апреля 2010

Привет, все, что я пытаюсь сделать очень простой динамический запрос, который будет динамически выбирать столбец, т.е. выбор столбца будет зависеть от другого запроса. Поэтому я бы выбрал col X, если условие 1, и Y, если условие 2.

Поэтому я попытался использовать query.Select(colname), используя метод расширения, также попытался использовать Func<>, но я не уверен, как это сделать. Я читал о динамическом расширении для linq, а также об отражении, но с отражением в функцию GetValue не возвращает значение для моего столбца в базе данных. Помогите, пожалуйста, я просто пытаюсь динамически выбирать столбец во время выполнения, и никаких условий для него нет.

1 Ответ

5 голосов
/ 27 апреля 2010

Я думаю, что проще всего просто создать динамический запрос. Давайте пока предположим, что все потенциальные столбцы имеют одинаковый тип - строку. Обратите внимание, что вы можете форсировать это, вызывая ToString () для любого столбца, который вы выбираете. Это важно, потому что все выбранные объекты должны быть одного типа. Затем просто скомпонуйте свой запрос с условиями запроса и выберите правильный выбор столбцов, чтобы пометить его с помощью метода расширения.

 var query = db.Widgets.Where( w => w.Price > 10M );
 IEnumerable<string> display = null;
 if (likesName)
 {
    display = query.Select( w => w.Name );
 }
 else if (likesDescription)
 {
    display = query.Select( w => w.Description );
 }
 else
 {
    display = query.Select( w => w.Name + " (" + w.Description + ")" );
 }

 foreach (var item in display)
 {
     ...
 }

Надеюсь, этот надуманный пример поможет вам встать на правильный путь.

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