5

次のような ravendb クラスがあります。


        public class Student
        {
            public string Id { get; set; }
            public string TopLevelProperty { get; set; }
            public Dictionary<string, string> Attributes { get; set; }
            public Dictionary<string,List<Dictionary<string, string>>> CategoryAttributes { get; set; }
        }

そして次のようなドキュメント:
ここに画像の説明を入力

次の linq は、selectmany が原因で機能しません。


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

StartYear == 2009 のすべての学生を取得するにはどうすればよいですか?

4

2 に答える 2

3

これはそれを行います:


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

EducationHistory の後のドットではなくコンマに注意してください。これは、StartYear という名前の項目の 1 つでプロパティを見つけるためにリストを調べていることを示しています。よりも大きくしたい場合:


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

などなど

于 2011-05-12T06:06:30.117 に答える
1

これはうまくいくはずです:

test = (from student in session.Query()
       where student.CategoryAttributes["EducationHistory"].Any(edu => edu["StartYear"]== "2009" )
       select student).ToList();
于 2011-05-12T07:13:47.350 に答える