/ / Linq z dynamicznym wyszukiwaniem EF - asp.net-mvc, linq, entity-framework, linq-to-entity

Linq z dynamicznym wyszukiwaniem EF - asp.net-mvc, linq, entity-framework, linq-to-entity

Używam EF 3.5 z MVC.

Chcę utworzyć stronę wyszukiwania, ma kilka pól dla kryteriów takich jak data, int itp.

Jaki jest sposób w linq do jednostek, aby dynamicznie filtrować wynik.

Jeśli istnieje jeden parametr, możemy go użyć .where (a => a.id == 1)

ale wiele kombinacji z opcjonalnym parametrem, jak mogę załadować wyniki, a następnie przekazać do modelu.

Odpowiedzi:

0 dla odpowiedzi № 1

EF 3.5? Tak czy inaczej...

Możesz dodać kryteria wyszukiwania do ObjectQuery, ObjectSet lub IQueryable i połączyć je w oparciu o kryteria wyszukiwania, które są przydatne.

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 );

}

Jeśli potrzebujesz podejścia opartego na łańcuchach, zawsze możesz użyć przeciążenia ObjectQuery.Where ("esql"), aby dynamicznie konstruować niektóre eql i przekazywać je dalej.

Jeśli potrzebujesz większej kontroli nad ciągami i nie obawiasz się złożoności, którą możesz dać Dynamiczny Linq próba.