2010-04-02 13 views
5

क्या आप इकाई ढांचे में किसी इकाई को "या" स्थिति जोड़ सकते हैं? जैसे उदाहरण कुछ के लिए:इकाई फ्रेमवर्क में इकाई को जोड़ें या शर्त

Property1 == (1 या 2 या 3)

संदेश मैं जब "1 || 2 || 3" या "1,2 का मूल्य डाल मिल

condition is not compatible with the type of the member 

उत्तर

11

आप क्या करने की जरूरत: 3 "या" 1 या 2 या 3 "इस संदेश देता है

var results = entityCollection.Where(entity => entity.Property1 == 1 || entity.Property1 == 2 || entity.Property1 == 3); 
+0

मुझे इससे डर था। मैं जो करना चाहता हूं वह उसी शर्त के लिए होता है जब हर तालिका के खिलाफ एक क्वेरी निष्पादित की जाती है ताकि जब भी मैं टेबल पर हिट करता हूं तो मुझे उपरोक्त कोड लिखने की आवश्यकता नहीं होती है। –

+0

@ ब्लैकवेल: क्वेरी को यूटिलिटी क्लास में रखें ताकि आप इसका पुन: उपयोग कर सकें। –

+1

@ रीड कॉपसी: क्या आप 'इकाई =>' खो रहे हैं? –

3

इसने कोशिश नहीं की है, लेकिन आप contains का उपयोग करने का प्रयास कर सकते हैं। प्रदर्शन के बारे में सुनिश्चित नहीं हैं, लेकिन कोड है छोटे: http://www.albahari.com/nutshell/predicatebuilder.aspx

यह थोड़ा और अधिक उन्नत है, लेकिन यह अपने सबसे अच्छे शर्त है कि अगर आप गतिशील स्थिति श्रृंखला के लिए है:

int[] vals = new int[] { 1, 2, 3, 4 }; 
var results = entityCollection.Where(entity => vals.Contains(entity.Property1)); 
+1

'युक्त' केवल ईएफ 4 में समर्थित है, जिसे अभी तक जारी नहीं किया गया है (यह 12 वें के साथ .Net 4 के साथ आ रहा है)। एमएस की वेबसाइट पर एक रिलीज उम्मीदवार है। –

+0

इसके बारे में भी सोचा नहीं था - मैं थोड़ी देर के लिए ईएफ 4 का उपयोग कर रहा हूं, इसलिए यह सामान्य लग रहा था। –

10

तुम भी बाहर विधेय बिल्डर की जाँच करनी चाहिए ।

foreach (string keyword in keywords) 
    { 
    string temp = keyword; 
    predicate = predicate.Or (p => p.Description.Contains (temp)); 
    } 
संबंधित मुद्दे