2013-05-12 2 views
2

1.) У меня есть запрос лица, как: return myEntityStore.Query<theType>(x => x.Name == "whatevs");несколько выражений LINQ, и динамические свойства

Однако, в идеале я хочу вызвать функцию, которая присоединяет другие выражения для исходного запроса, как OrderBy-х и более Где.

Что-то вроде этого:

public IQueryable<T> ProcessQuery<T>(System.Linq.Expressions.Expression<Func<T, bool>> theOriginalQuery) where T: class 
    { 
     return EntityStore.Query<T>(theOriginalQuery).Where(x => x.Active == true).OrderBy(x => x.OrderBy); 
    } 

2.) Одна из очевидных проблем является то, что я работаю с <T>, так есть ли способ задать свойство в виде строки или что-то?

<T>(expression).OrderBy(x => "x.ThisColumnExistsIPromise"); 

3.) Функция запроса уже преобразует выражение в тех случаях, когда(), так что было бы достаточно, чтобы просто сделать где (выражение) .гд (выражение)?

Итак, в конце концов, можно ли достичь следующего?

entityStore.Query<T>(originalExpression).Where(additionalExpression).Where(x => "x.Active == true").OrderBy(x => "x.OrderBy"); 
+0

Как вы могли догадаться, наши стандарты схемы заставляют каждую таблицу иметь столбец «Active» и «OrderBy». –

+0

Рассматривали ли вы реализацию интерфейса для каждого типа с этими двумя свойствами? – dtb

ответ

2

На самом деле вопрос не столь ясен. Но я заметил, что ваша проблема может быть решена, если вы использовали LINQ Dynamic Query Library, то вы можете использовать имя свойства в виде строки делать все, что вы хотите (OrderBy, где ....)

Для получения дополнительной информации смотрите на this

Смежные вопросы