2010-03-04 13 views
5

मैं एक linq खोज कैसे बना सकता हूं जो nulls (या nullables) को अनदेखा करता है?लिंक खोज जो नल को अनदेखा करती है

मैं एक विधि

IEnumerable<X> Search(int? a, int? b, int? c) 

है और मैं यह ints में से किसी पर मैचों वापस जाने के लिए करना चाहते हैं? जो शून्य नहीं हैं।

IE: यदि a और c मान 1 और 9 और b (मोटे तौर पर)

SELECT * 
FROM [TABLE] 
WHERE a = 1 
AND c = 9 

मेरे वास्तविक विधि के लिए है अशक्त खोज प्रस्तुत करना चाहिए 5 + पैरामीटर होगा, इसलिए बार-बार दोहराना संयोजन है सही बाहर है।

उत्तर

5
IEnumerable<X> query = items; 
if (a.HasValue) { 
    query = query.Where(x => x.a == a.Value) 
} 
if (b.HasValue) { 
    query = query.Where(x => x.b == b.Value) 
} 
if (c.HasValue) { 
    query = query.Where(x => x.c == c.Value) 
} 
4
var result = from row in table 
where (!a.HasValue || row.a == a.Value) 
&& (!b.HasValue || row.b == b.Value) 
&& (!c.HasValue || row.c == c.Value) 
select row; 
+0

आप इस परीक्षण किया है? जब मैं परिणाम की गणना करने की कोशिश करता हूं तो मुझे एक 'अवैधऑपरेशन अपवाद' मिल रहा है। –

+0

क्या आपके पास त्रुटि है कि क्या त्रुटि है? त्रुटि संदेश क्या है? –

+0

@ डेविड '{" निरर्थक ऑब्जेक्ट का मान होना चाहिए। "}' –

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