मैं जानता हूँ कि इस सवाल का 7 महीने पुरानी है, लेकिन मैं ने वही समस्या & था इस पहला सवाल है कि आया था जब मैं खोजा गया। मैं अपने कामकाजी समाधान को जोड़ना चाहता था क्योंकि मास्टर नैतिकता ने मेरे लिए काम नहीं किया था।
मूल रूप से, मैंने लगभग सरफैक्सन के पहले प्रयास के समान वाक्यविन्यास की कोशिश की। मुझे वही NullReferenceException मिला जो उसने किया था। मास्टर नैतिकता के जवाब ने या तो मदद नहीं की ...
मैं एक खोज फ़ंक्शन बनाने की कोशिश कर रहा हूं जो सटीक मिलान की बजाय पसंद की खोज करता है। अनुरोध ऑब्जेक्ट पर कई मानदंड हैं जो शून्य हो सकते हैं या नहीं हो सकते हैं (सादगी के लिए हम 2 मानदंडों के साथ एक उदाहरण का उपयोग करेंगे)। मास्टर नैतिकता के सुझाव के बाद, मैंने यह कोशिश की:
var searchResults = db.Select<Item>(q => q
.Where(x => string.IsNullOrWhiteSpace(request.Criteria1) || x.Criteria1.Contains(request.Criteria1))
.Where(x => string.IsNullOrWhiteSpace(request.Criteria2) || x.Criteria2.Contains(request.Criteria2))
);
मुझे अभी भी एक NullReferenceException मिला है। लगता है कि & & और || ऑपरेटर लैम्ब्डा अभिव्यक्ति के अंदर शॉर्ट-सर्किट मूल्यांकन का उपयोग नहीं कर रहे हैं।
SqlExpressionVisitor<Item> ev = new ServiceStack.OrmLite.MySql.MySqlExpressionVisitor<Item>();
if (!String.IsNullOrWhiteSpace(request.Criteria1)) {
ev.Where(q => q.Criteria1.Contains(request.Criteria1));
}
if (!String.IsNullOrWhiteSpace(request.Criteria2)) {
ev.Where(q => q.Criteria2.Contains(request.Criteria2));
}
searchResults = db.Select<Item>(ev);
यह बहुत सुंदर महसूस नहीं करता है, लेकिन यह केवल एक चीज मैं मिल सकता है कि काम करता है:
क्या मैं अंत में साथ जाना था यह है।
स्रोत
2013-12-18 17:02:43
मुझे अभी भी इस दृष्टिकोण के साथ एक NullReferenceException मिल रहा है। मैंने एक कामकाजी समाधान जोड़ा है। –