Linq с EF динамическим поиском - PullRequest
0 голосов
/ 16 января 2010

Я использую EF 3.5 с MVC.

Я хочу сделать страницу поиска, имеет несколько полей для критериев, таких как дата, int и т. Д.

Как в linq к сущностям фильтровать результат динамически.

Если есть один параметр, который мы можем использовать .где (а => a.id == 1)

но многие комбинации с дополнительным параметром, как я могу загрузить результаты и затем перейти к модели.

1 Ответ

0 голосов
/ 16 января 2010

EF 3,5?В любом случае ...

Вы можете добавить критерии поиска к ObjectQuery, ObjectSet или IQueryable и объединить их в цепочку, исходя из того, какие критерии поиска полезны.

public SearchMyThings( string a, string b, int c )
{
     var mywidgets = ObjectContext.CreateObjectSet<Widget>();
     //or the EF 1.0 version CreateSet?

     if( !a.IsNullOrEmpty )
        mywidgets = mywidgets.Where( w => w.AProperty == a );

     if( !b.IsNullOrEmpty )
        mywidgets = mywidgets.Where( w => w.BProperty == b );

     if( c > 0 )
        mywidgets = mywidgets.Where( c => c.CProperty == c );

}

Если вам нужен строковый подход,всегда можно использовать перегрузки ObjectQuery.Where ("esql") для динамического построения некоторого eql и его передачи.

Если вам нужно БОЛЬШЕ контроля над строками и вы не боитесь сложности, вы можете дать Dynamic Linq попробовать.

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