2010-09-24 14 views
5

Birisi, lütfen SQL SQL süzgecinin WHERE (...) VEYA (...) ObjectQuery bilder ile nasıl yeniden yazılacağını yanıtlayabilir misiniz?ObjectQuery ile nasıl kullanılır Filtrelenen nesne OR yan tümcesiyle

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

Nerede() yöntemini kullanmak, ama burada Ürettiği yerine kullanmak TD istediğiniz olsa ve ayrılmış maddeleri. QueryBilder ile mümkün mü? ,

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

Teşekkür Artem

cevap

7

Yine, benim soruyu kendime cevap oluyor: Ben "YA ayrılmış" filtre oluşturmak için bu nasıl kullanılacağı anlamına gelir. Bunun için teşekkürler. İşte

cevabı:

ObjectQuery EntityCommand olarak "IN" MADDESİ DESTEK DEĞİL

HENÜZ ... o zaten DataSet seçilen kullanmak kadar DB gönderme sorgu için WHERE IN filtre kullanmak için hiçbir fırsat var demektir DB'den. Yani sadece LINQ yöntemler bunu yapabilirsiniz ve sadece <>

rağmen, o kadar net ama etkili karar bir alternatif var List seçilen ile - Sorgunuzu birden OR koşullarını kullanabilirsiniz ve onlar benim için iyi çalışır:

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

Umut bu yardımcı olacaktır birisi ... zevk :)

2

olan ObjectQuery CLAUSE.The Syntex'e "IN" EntityCommand DESTEK olarak

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

ObjectQuery MADDE "IN" EntityCommand DESTEK olarak.

Mantıksal geliyor ObjectQuery:

ObjectQuery, birden fazla koşulun birlikte birleştirilmesine izin verir.

  • Varsayılan olarak, koşullar bir AND parametresi kullanılarak birleştirilir. Bir OR operatörünü koşullar arasında yerleştirmek için, verilen Nerede yöntemleri arasında Or() yöntemini çağırın. Ayrıca, koşullarınızın kodunun daha net ve daha kolay okunmasını istiyorsanız, And() yöntemini de açıkça arayabilirsiniz.

Örn: // Adı "Joe" veya soyadı "Smith" olan kullanıcıları alır.

var whereQuery = UserInfoProvider.GetUsers()

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

fazla bakınız: https://docs.kentico.com/display/K82/Retrieving+database+data+using+ObjectQuery+API

İlgili konular