Динамические запросы Linq с Entity Framework

Мне известно о нескольких усилиях по динамическому построению запросов Linq, таких как this и this.

Ни один из них не кажется идеальным, так как я хотел бы избежать помещения выражений в строку и опускать где, если это не нужно.

Моя главная проблема заключается в том, что запрос оптимизирован для базы данных и по возможности динамически пропускает ненужные предложения.

Есть ли какие-либо новые разработки в EF 4.0 для таких сценариев?

ОБНОВИТЬ

Вот одна ссылка, которая мне показалась очень полезной: http://www.albahari.com/nutshell/predicatebuilder.aspx действительно, динамическое добавление фильтров "И" тривиально, а добавить фильтры "И" можно легко, используя построитель предикатов:

var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (p => p.Description.Contains (temp));

и в соответствии с LinqPad sql получает в зависимости от того, какие фильтры были применены..

1 ответ

Решение

Для исключения причины "Где" (псевдокод, надеюсь, я правильно понял ваш вопрос):

var query = IQueryable<Foo>();

if(someCondition)
    query = query.Where(......);

var result = query.Select(.......);

Для динамических запросов - я не слышал ничего нового. ИМХО нам придется остаться со строками. Можете ли вы придумать лучший подход?

Другие вопросы по тегам