2016-04-06 4 views
6

पर खोज पैरामीटर को अनदेखा करें मेरे पास एक खोज फ़ॉर्म है जहां उपयोगकर्ता कई पैरामीटर (डेटा, स्थिति, प्रकार, आईडी, सारांश, विवरण) में प्रवेश कर सकता है और शेष खाली छोड़ सकता है।लिंक से एसक्यूएल - शून्य या शून्य

मेरी मूल खोज के लिए यहां मेरा लिंक SQL कोड है। शून्य, शून्य या खाली स्ट्रिंग के लिए लिंक के भीतर प्रत्येक पैरामीटर को जांचने का कोई तरीका है?

List<RequestStatusModel> objRequestStatus = new List<RequestStatusModel>(); 
var query = from r in SimCareDB.Requests 
      where r.CustomerID == 31  
      select (new RequestStatusModel 
      { 
       RequestID = r.RequestID, 
       RequestTitle = r.RequestTitle, 
       DateAdded = r.DateAdded.ToString(), 
       DateChanged = r.DateChanged.ToString(), 
       RequestStatusID = r.StatusID 
      }); 

धन्यवाद!

+0

कारण है कि यह अपने LINQ क्वेरी 'में' होना जरूरी है? – Marco

+0

सभी महान उत्तरों, इसने मेरी समस्या हल की। धन्यवाद! – Simon

उत्तर

0

आप अगर कुछ मानदंडों को पारित कर दिया है केवल फ़िल्टर करना चाहते हैं, तो आप यह वही है तुम पर जो अनुरोध

1

पारित कर रहे हैं आधारित चाहते हैं कि अभिव्यक्ति सेट इस

var objRequestStatus = new List<RequestStatusModel>(); 
    var query = from r in SimCareDB.Requests 
       where r.CustomerID == 31 

if (String.IsNullOrEmpty(r.RequestID)) 
    objRequestStatus = objRequestStatus.Where(x => x.RequestID == r.RequestID); 

if (String.IsNullOrEmpty(r.RequestTitle)) 
    objRequestStatus = objRequestStatus.Where(x => x.RequestTitle == r.RequestTitle); 

//you other filters here 

की तरह कुछ करना चाहिए यदि यह आपके लिनक स्टेटमेंट में होना जरूरी नहीं है, अगर आप स्टेटमेंट्स के साथ क्लासिक के साथ ऐसा कर सकते हैं।

List<RequestStatusModel> objRequestStatus = new List<RequestStatusModel>(); 
var query = from r in SimCareDB.Requests 
      where r.CustomerID == 31 
      select (new RequestStatusModel 
      { 
       //... 
      }); 

if(data != null) //Replace with additional checks, if neccessary 
{ 
    query = query.where(x=> ...); 
} 

if(status != null) 
{ 
    query = query.where(x => ...) 
} 
0

आप उन सभी if रों बचना चाहते हैं, तो आप कर सकता है

List<RequestStatusModel> objRequestStatus = new List<RequestStatusModel>(); 
var query = from r in SimCareDB.Requests 
      where (r.CustomerID == 31) && 
        (!String.IsNullOrEmpty(id) ? r.RequestID == id : true) && 
        (!String.IsNullOrEmpty(status) ? r.StatusID == status : true) 
        /* And so on */ 
      select (new RequestStatusModel 
      { 
       RequestID = r.RequestID, 
       RequestTitle = r.RequestTitle, 
       DateAdded = r.DateAdded.ToString(), 
       DateChanged = r.DateChanged.ToString(), 
       RequestStatusID = r.StatusID 
      }); 
+0

इन सभी चेकों का डेटाबेस में अनुवाद किया जाएगा और वहां निष्पादित किया जाएगा। इससे दुर्भाग्यपूर्ण समस्याएं हो सकती हैं, जैसे कि गलत क्वेरी योजना चयन या अनुकूल सूचकांक का उपयोग करने में असमर्थता। –

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