2011-05-12 13 views
5

मैं ऐसे की तरह एक ravendb वर्ग है :वर्कअराउंड का उपयोग कर क्लाइंट API

 

       test = (from student in session.Query() 
         from eduhistory in student.CategoryAttributes["EducationHistory"] 
         where eduhistory["StartYear"] == "2009" 
           select student).ToList(); 

मैं कैसे सभी छात्रों को प्राप्त कर सकते हैं जहां StartYear == 2009?

उत्तर

3

यह यह करता है:

 

test = session.Advanced.LuceneQuery() 
      .Where("CategoryAttributes.EducationHistory,StartYear:2009") 
      .ToList(); 
 

सूचना अल्पविराम के बजाय EducationHistory के बाद एक बिंदु। यह इंगित करता है कि हम StartYear नाम की वस्तुओं में से किसी एक में संपत्ति ढूंढने के लिए सूची देख रहे हैं। अगर मैं अधिक से अधिक चाहता था:

 

test = session.Advanced.LuceneQuery() 
      .Where("CategoryAttributes.EducationHistory,StartYear:[2009 TO null]") 
      .ToList(); 
 

आदि आदि

+0

के लिए है कि मैं प्रयोग किया जाता है कहाँ ("CategoryAttributes.EducationHistory, StartYear: * 200 *") – basarat

1

यह काम करना चाहिए:

test = (from student in session.Query() 
     where student.CategoryAttributes["EducationHistory"].Any(edu => edu["StartYear"]== "2009") 
     select student).ToList(); 
+0

मुझे त्रुटि मिलती है: 'System.Linq.Expressions.MemberExpression' टाइप करने के लिए 'System.Linq.Expressions.TypedParameterExpression' प्रकार की ऑब्जेक्ट डालने में असमर्थ। – basarat

+0

मैं एक बिल्ड का उपयोग कर रहा हूं जहां यह तय किया गया है: http://stackoverflow.com/q/5800685/390330 हालांकि मुझे इस क्वेरी में एक ही त्रुटि मिल रही है। – basarat

+0

आप यहां परीक्षण के लिए पूरा कोड प्राप्त कर सकते हैं: http://pastebin.com/c6HDjQcS – basarat

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