[c#] LINQ से एसक्यूएल जहां क्लॉज वैकल्पिक मानदंड



Answers

पैरामीटर के अस्तित्व के लिए बस एक सशर्त जांच का उपयोग करने की आवश्यकता है। उदाहरण के लिए:

where (string.IsNullOrEmpty(ProductNumber) || ProductNumber == tags.productNumber)

इस तरह यदि उत्पाद संख्या दर्ज नहीं की गई है तो अभिव्यक्ति सभी मामलों में सच हो जाएगी, लेकिन यदि यह दर्ज किया गया है तो यह मेल खाने पर ही सही होगा।

Question

मैं LINQ से SQL क्वेरी के साथ काम कर रहा हूं और डेटा समस्या को फ़िल्टर करने के लिए मेरे पास 4 वैकल्पिक फ़ील्ड हैं जहां एक समस्या है। वैकल्पिक रूप से, मेरा मतलब है कि कोई मान दर्ज करना है या नहीं। विशेष रूप से, कुछ टेक्स्ट बॉक्स जिनमें कोई मान हो सकता है या एक खाली स्ट्रिंग हो सकती है और कुछ ड्रॉप डाउन सूचियां हो सकती हैं जिनके पास मूल्य चुना गया हो या शायद नहीं ...

उदाहरण के लिए:

    using (TagsModelDataContext db = new TagsModelDataContext())
     {
        var query = from tags in db.TagsHeaders
                    where tags.CST.Equals(this.SelectedCust.CustCode.ToUpper()) 
                    && Utility.GetDate(DateTime.Parse(this.txtOrderDateFrom.Text)) <= tags.ORDDTE
                    && Utility.GetDate(DateTime.Parse(this.txtOrderDateTo.Text)) >= tags.ORDDTE
                    select tags;
        this.Results = query.ToADOTable(rec => new object[] { query });
    }

अब मुझे निम्नलिखित फ़ील्ड / फ़िल्टर जोड़ने की जरूरत है, लेकिन केवल तभी जब वे उपयोगकर्ता द्वारा आपूर्ति की जाती हैं।

  1. उत्पाद संख्या - एक और तालिका से आता है जिसे टैगहेडर में शामिल किया जा सकता है।
  2. पीओ संख्या - टैगहेडर तालिका के भीतर एक फ़ील्ड।
  3. आदेश संख्या - पीओ # के समान, बस अलग कॉलम।
  4. उत्पाद स्थिति - यदि उपयोगकर्ता ने इसे ड्रॉप डाउन से चुना है, तो यहां चयनित मान लागू करने की आवश्यकता है।

मेरे पास पहले से मौजूद प्रश्न बहुत अच्छा काम कर रहा है, लेकिन फ़ंक्शन को पूरा करने के लिए, जहां इन खंडों में इन 4 अन्य आइटमों को जोड़ने में सक्षम होना चाहिए, बस यह नहीं पता कि कैसे!






Related