क्या "इन" खंड के साथ क्वेरी उत्पन्न करने के लिए निबर्ननेट लिनक प्राप्त करना संभव है? जैसे - Where AnID in (x,y,z)
?खंड में निबर्ननेट लिंक
20
A
उत्तर
28
मुझे सभी संभावित LINQ प्रश्नों को उत्पन्न करने के संबंध में nHibernate की स्थिति नहीं पता है, लेकिन आप IN उत्पन्न करने के लिए .Contains()
का उपयोग करने में सक्षम होना चाहिए।
var list = new int[] { x, y, x };
var q = db.Entities.Where(e => list.Contains(e.AnID));
3
सहमत है, यह काम करता है। मैं 'नहीं' में हालांकि अजीब होने के लिए (3.3.0 के रूप में जीए)
...
from
mytable t0_
where
case
when t0_.testValue in (
@p0 , @p1 , @p2
) then 1
else 0
[email protected]
@p0 = 9 [Type: Int32 (0)],
@p1 = 99 [Type: Int32 (0)],
@p2 = 109 [Type: Int32 (0)],
@p3 = False [Type: Boolean (0)],
...
एक सा 'मामले' को यह अजीब लगता है जब 'नहीं' में स्पष्ट हो गया होता (के लिए नहीं है कि उत्पन्न एसक्यूएल पाया मैं हर पंक्ति को पढ़ने की योजना बना रहा हूं, लेकिन शायद एक ट्रेस/प्रोफाइल में)।
(... बाद में उस दिन ...)
मैंने महसूस किया कि एसक्यूएल के ऊपर 'अजीब' विकल्प केवल जब मैं
.Where(e => list.Contains(e.AnID) == false)
इस्तेमाल किया था अगर मैं
.Where(e => !list.Contains(e.AnID))
इस्तेमाल किया
एसक्यूएल उत्पन्न बहुत क्लीनर है ('इन इन' का उपयोग करके)
0
एनएचबेर्नेट के पास RestrictionEx का IsIn हिस्सा है तनाव
एक्स => x.Name.IsIn (नई [] { "एक", "बी"})
हाँ, NHibernate 3.1.0 जीए साथ काम करता है –