2010-09-24 17 views
5

Qualcuno potrebbe aiutarmi a rispondere a come riscrivere il filtro SQL raw WHERE (...) O (...) con ObjectQuery bilder, per favore?Come utilizzare ObjectQuery con Where filtro separato dalla clausola OR

String queryRaw = "SELECT ls.LocaleName, ls.IsActive, ls.LocaleDescription " + 
        "FROM RoutesEntities.Locales AS ls "; 

        //" WHERE ls.LocaleName = 'en' OR ls.LocaleName = 'de' " 

this._queryData = new ObjectQuery<DbDataRecord>(queryRaw, routesModel); 

avrei usato il metodo Dove(), ma genera in cui le clausole separate da AND, anche se voglio usare o al posto. È possibile con QueryBilder? intendo come usare questo per generare "o separati" Filtro:

Where("it.LocaleName IN (@localeName)", new ObjectParameter("localeName", String.Join(",", localeName))) 

Grazie, Artem

risposta

7

Sta accadendo di nuovo, ho risposto alla mia domanda me stesso. Grazie per questo.

ecco la risposta:

ObjectQuery come EntityCommand non supportano CLAUSOLA "IN" ANCORA ... vuol dire che non v'è alcuna possibilità di utilizzare DOVE IN filtro per la query l'invio a DB finché non si utilizza già selezionato DataSet da DB. Quindi solo i metodi di LINQ può fare questo e solo con selezionati Lista <>

però, c'è un'alternativa in modo chiaro ma efficace decisione di non - è possibile utilizzare più o condizioni nella vostra interrogazione e funzionano bene per me:

ObjectQuery<DbDataRecord> query = query.Where("it.RouteID=1 OR it.RouteID=2"); 

Spero che questo vi aiuterà qualcuno ... Enjoy :)

5

È possibile utilizzare la clausola iN in un ObjectQuery. Hai solo bisogno di usare al posto di {(.

Eg "it.ID IN {4,5,6}" invece di "it.ID IN (4,5,6)"

Tutto il merito per questa risposta viene da 'Contains()' workaround using Linq to Entities?

2

ObjectQuery come EntityCommand SUPPORT "iN" CLAUSE.The Syntex è

ObjectQuery<SampleProduct> s = db.SampleProducts; 
s.Name = "SampleProductName"; 
string strIDList = "10,20,30"; 
s= s.Where("SampleProductName.ID IN {" + strIDList + "}"); 
0

ObjectQuery come EntityCommand SUPPORT "iN" CLAUSOLA.

Logical operatori di ObjectQuery:

ObjectQuery consente di unire più condizioni multiple.

  • Per impostazione predefinita, le condizioni vengono combinate utilizzando un parametro AND. Per posizionare un operatore OR tra le condizioni, chiamare il metodo Or() tra i metodi Where indicati. Puoi anche chiamare esplicitamente il metodo And() se desideri rendere il codice delle tue condizioni più chiaro e più facile da leggere.

Es: // Recupera gli utenti il ​​cui nome è "Joe" o il cognome è "Smith".

var = whereQuery UserInfoProvider.GetUsers()

.Where("FirstName", QueryOperator.Equals, "Joe") 
.Or() 
.Where("LastName", QueryOperator.Equals, "Smith"); 

riferiscono più: https://docs.kentico.com/display/K82/Retrieving+database+data+using+ObjectQuery+API