2010-09-24 9 views
5

क्या कोई मुझे कच्चे एसक्यूएल फ़िल्टर को फिर से लिखने का उत्तर देने में मदद कर सकता है जहां ऑब्जेक्टक्चर बिल्डर के साथ WHERE (...) या (...) कृपया?ऑब्जेक्टक्वियर का उपयोग कैसे करें फ़िल्टर के साथ अलग करें या खंड

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

मैं कहां() विधि का उपयोग करूंगा, लेकिन यह उत्पन्न करता है कि खंड कहां से अलग होते हैं, हालांकि मैं इसका उपयोग करना चाहता हूं या इसके बजाय। क्या QueryBilder के साथ यह संभव है? मेरा मतलब है कि यह कैसे उपयोग करने के लिए उत्पन्न करने के लिए "या अलग" फिल्टर:

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

धन्यवाद, आर्टेम

उत्तर

7

यह फिर से, मैं अपने सवाल अपने आप का जवाब हो रहा है। इसके लिए धन्यवाद।

यहाँ जवाब है:

ObjectQuery EntityCommand के रूप में समर्थन नहीं करते "में" खंड अभी तक ... इसका मतलब है कि जब तक आप पहले से ही डेटासेट चयनित उपयोग डीबी के लिए भेजने से क्वेरी के लिए कहां में फिल्टर का उपयोग करने के लिए कोई अवसर है कि वहाँ डीबी से तो केवल LINQ तरीकों ऐसा करने के लिए और केवल सूची के साथ चयनित <>

हालांकि, वहाँ एक विकल्प नहीं इतना स्पष्ट लेकिन प्रभावी निर्णय है सकते हैं - आप अपने प्रश्न में कई या शर्तों का उपयोग कर सकते हैं और वे मेरे लिए अच्छा काम:

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

उम्मीद है कि यह किसी की मदद करेगा ... आनंद लें :)

5

आप ऑब्जेक्टक्वियर में इन क्लॉज का उपयोग कर सकते हैं। तुम बस {बजाय (उपयोग करने के लिए की जरूरत है।

जैसे "it.ID में {4,5,6}" के बदले "में it.ID (4,5,6)"

सभी क्रेडिट के लिए इस जवाब से 'Contains()' workaround using Linq to Entities?

2

ObjectQuery EntityCommand support.google.com "में" CLAUSE.The सिंटेक्स के रूप में है

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

ObjectQuery EntityCommand समर्थन खंड "में" के रूप में।

तार्किक आता है ऑब्जेक्टQuery के ऑपरेटर:

ऑब्जेक्टक्चर आपको कई स्थितियों में एक साथ जुड़ने की अनुमति देता है।

  • डिफ़ॉल्ट रूप से, शर्तों को एक और पैरामीटर का उपयोग करके संयुक्त किया जाता है। शर्तों के बीच एक या ऑपरेटर रखने के लिए, दी गई विधियों के बीच Or() विधि को कॉल करें। यदि आप अपनी शर्तों का कोड स्पष्ट और पढ़ने में आसान बनाना चाहते हैं तो आप स्पष्ट रूप से एंड() विधि को भी कॉल कर सकते हैं।

पूर्व: // उन उपयोगकर्ताओं को पुनर्प्राप्त करता है जिनका पहला नाम "जो" है या अंतिम नाम "स्मिथ" है।

वर whereQuery = UserInfoProvider.GetUsers()

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

संदर्भ लें अधिक: https://docs.kentico.com/display/K82/Retrieving+database+data+using+ObjectQuery+API

संबंधित मुद्दे