Построение, какие свойства выбрать с помощью LINQ To Object - PullRequest
2 голосов
/ 19 августа 2009

Я пытаюсь построить запрос LINQ во время выполнения, чтобы были выбраны только определенные свойства. Я думал о том, что можно создать запрос, добавив дополнительные запросы .Select () к моему запросу или используя динамические расширения LINQ для передачи строки столбцов (хотел бы держаться подальше от запроса, построенного на основе строк) , Однако мои нынешние попытки найти решение не сработали.

Ответы [ 3 ]

2 голосов
/ 19 августа 2009

Посмотрите на Dynamic LINQ. Это может быть именно то, что вы хотели.

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

1 голос
/ 19 августа 2009

Вам нужно взглянуть на выражения linq. Вот небольшой пример, который должен работать для выбора одного свойства, выбор более сложного становится более сложным, но обычно это выполнимо, если вы определяете тип со свойствами, которые вы выбираете (например, не используйте анонимные типы в запросах, которые вы генерируют).

using System.Linq.Expressions;
...


IQueryable<T> query = someQuery;
Expression expression = query.Expression;

ParameterExpression obj = Expression.Parameter(query.ElementType, "obj");
MemberExpression property = Expression.PropertyOrField(obj, propertyName);
Expression<Func<T,bool>> lambda = Expression.Lambda<Func<T,bool>>(property, obj);
query = query.Where(lambda);

По крайней мере, это общая идея

0 голосов
/ 19 августа 2009

Как прокомментировал Джастин, ваша трудность будет заключаться в поиске типа для возврата. Преимущество LINQ в том, что у вас есть строго типизированные сущности для работы. Если это не работает в ваших интересах, или вы делаете много работы против зерна, возможно, есть лучшее решение.

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