2012-08-28 8 views
13

मैं इस क्वेरी अनुकरण करना चाहते हैं:प्रश्न में प्रश्नोत्तरी?

SELECT * FROM FOO WHERE ID IN (1,2,3) 

मैं कैसे FNH में ऐसा कर सकते हैं?

var ids = new List<int>{1,2,3}; 
var results = session.QueryOver<Foo>().Where(x=> ids.Contains(x.id)); 

लेकिन यह काम नहीं करता है, बस मुझे एक "अपरिचित विधि कॉल" अपवाद देता है।

कोई विचार? यह एक आम अनुरोध होना चाहिए।

+0

[जहां भी इनके साथ क्वेरीओवर का उपयोग कर एनएचबर्ननेट का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/5408781/nhibernate-using-queryover-with-where-in) –

उत्तर

32

आह- समझ गया!

var results = session.QueryOver<Foo>().AndRestrictionOn(x=>x.id).IsIn(ids) 

यह पिछले टुकड़ा के साथ हम अपने साल पुराने हाथ से लुढ़का ORM खाई करने के लिए तैयार होंगे: AddRestrictions एक ISIN विधि है!

+1

बस आश्चर्यजनक सरल! धन्यवाद! –

+1

[यहां एक गिस्ट है] (https://gist.github.com/kenny-evitt/9121755) इसके द्वारा जेनरेट किए गए एसक्यूएल के उदाहरण के साथ। –

+0

'ids.ToArray()'? – ruffin

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