2011-05-12 4 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.TypedParameterExpression'형식의 개체를 'System.Linq.Expressions.MemberExpression'형식으로 캐스팅 할 수 없습니다. – basarat

+0

이 수정 된 빌드를 사용하고 있습니다 : http://stackoverflow.com/q/5800685/390330 그러나이 쿼리에서 같은 오류가 발생합니다. – basarat

+0

테스트를위한 전체 코드는 http://pastebin.com/c6HDjQcS에서 확인할 수 있습니다. – basarat

관련 문제