2011-10-26 6 views
30

मेरे इकाई है:RavenDB: कैसे एकाधिक खोज शब्दों के साथ क्वेरी करने के लिए

class Resource 
{ 
    string Name; 
    string EmployeeId; 
} 

मैं कई कर्मचारियों के संसाधनों के लिए कैसे क्वेरी करते हैं?

Resource[] FindResourcesByEmployees(string[] employeeIds) 
{ 
    return this.Session.Query<Resource>() 
     .Where(r => employeeIds.Contains(r.EmployeeId)) 
     .ToArray(); 
} 

हालांकि कि मुझे NotSupportedException देता है:: मैं इस कोशिश की समर्थित नहीं विधि: शामिल हैं।

Resource[] FindResourcesByEmployees(string[] employeeIds) 
{ 
    return this.Session.Query<Resource>() 
     .Where(r => employeeIds.Any(v => v == r.EmployeeId)) 
     .ToArray(); 
} 

फेंकता है कि NotSupportedException: समर्थित नहीं अभिव्यक्ति के प्रकार: System.Linq.Expressions.TypedParameterException तो मैं निम्न विधि की कोशिश की।

एसक्यूएल में यह कुछ की तरह होगा:

SELECT * FROM resource WHERE employeeid IN (1, 2, 3) 

मेरा प्रश्न है, मैं RavenDB में इस क्वेरी कैसा प्रदर्शन करते हैं?

+0

इस पोस्ट में आपकी सहायता कर सकते हैं http://stackoverflow.com/questions/4207739/linq-query-with-multiple-contains-any-for-ravendb – JonVD

+1

नहीं, वह मामला इकाई को स्वयं संग्रह के संबंध में मानता है। मेरे मामले में केवल क्वेरी में एक संग्रह होता है, जबकि इकाई में कोई संग्रह नहीं होता है। –

उत्तर

64

आप In ऑपरेटर का उपयोग कर सकते हैं। अगर मैं सही ढंग से याद अपने कोड इस तरह दिखना चाहिए:

using Raven.Client.Linq; 

Resource[] FindResourcesByEmployees(string[] employeeIds) 
{ 
    return this.Session.Query<Resource>() 
     .Where(r => r.EmployeeId.In<string>(employeeIds))) 
     .ToArray(); 
} 
+0

एक आकर्षण की तरह काम करता है, धन्यवाद! –

+22

एक और बात:। <> - विस्तार विधि के लिए "Raven.Client.Linq का उपयोग करना आवश्यक है" –

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

  • कोई संबंधित समस्या नहीं^_^