2010-09-24 10 views
5

Czy ktoś mógłby mi pomóc, aby odpowiedzieć na pytanie, jak przepisać surowy filtr SQL WHERE (...) OR (...) przy pomocy ObjectQuery bilder, proszę?Jak używać ObjectQuery z filtrem oddzielonym przez klauzulę 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); 

Chciałbym użyć metody where(), ale generuje gdzie klauzule rozdzielone i chociaż chcę użyć lub zamiast. Czy jest to możliwe dzięki QueryBilder? To znaczy, jak to wykorzystać do generowania "lub oddzielone" filter:

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

Dzięki Artem

Odpowiedz

7

To dzieje się znowu, i odpowiedzieć na moje pytanie sam. Dzięki za to.

Oto odpowiedź:

ObjectQuery jak EntityCommand nie obsługują „IN” klauzuli jednak ... to znaczy, że nie ma możliwości, aby skorzystać gdzie w filtr dla zapytania wysyłanego do DB, dopóki nie używają już wybrany DataSet z DB. Więc tylko metody LINQ może to zrobić i tylko z wybranej listy <>

Choć istnieje alternatywa nie jest tak oczywiste, ale skuteczna decyzja - można używać wielokrotnych lub warunków w zapytaniu i działają dobrze dla mnie:

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

nadzieję, że pomoże ktoś ... cieszyć :)

2

ObjectQuery jak EntityCommand Support "IN" CLAUSE.The Syntex jest

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

ObjectQuery jak EntityCommand Support "IN" klauzuli.

Logiczny operatory obiektu ObjectQuery:

ObjectQuery pozwala łączyć ze sobą wiele warunków.

  • Domyślnie warunki są łączone za pomocą parametru ORAZ. Aby umieścić operator OR między warunkami, wywołaj metodę Or() między podanymi metodami Where. Możesz również jawnie wywołać metodę And(), jeśli chcesz, aby kod warunków był wyraźniejszy i łatwiejszy do odczytania.

Ex: // Pobiera użytkowników o imieniu "Joe" lub nazwisku "Smith".

var whereQuery = UserInfoProvider.GetUsers()

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

Patrz więcej: https://docs.kentico.com/display/K82/Retrieving+database+data+using+ObjectQuery+API

Powiązane problemy