【问题标题】:using "In" restriction for collection in NHibernate在 NHibernate 中使用“In”限制进行收集
【发布时间】:2011-03-29 01:20:32
【问题描述】:

假设我有 4 节课

学生 { int StudentId, string StudentName, IList StudentMarks}

BaseMarks {bool GrandTotalMarks}

SpecializedMarks:BaseMarks {Ilist 结果}

结果 {字符串等级,布尔结果}

现在, 我有一种方法可以填充学生列表 IList 和嵌套标记集合,但在内部将其类型转换为科学标记。 IE。 Student 中的每个basemark 都可以转换为ScienceMarks 以获得实用的marks 属性值。

IList student_List = SomeMethodWhichRetursCollection();

问题 如何筛选在任何科目中获得“A”成绩的学生。

类似:

Students where ((SpecializedMarks)Students.StudentMarks).Result 集合。任何 Grade 属性的值 = "A"

【问题讨论】:

    标签: c# nhibernate


    【解决方案1】:

    HQL: The Hibernate Query Language

    LINQ for NHibernate

    // using HQL
    var students = Session.CreateQuery("from Students s where s.Grades = :grade")
                     .SetParameter("grade","A")
                     .List<Student>();
    
    // using NHibernate.Linq
    var students = Session.Linq<Student>().Where(s => s.Grades == "A").ToList();
    // or something more complex
    var students = Session.Linq<Student>()
                     .Where(s => s.Grades.Where(x => x.Score == "A"))
                     .ToList();
    

    【讨论】:

    • 感谢您的回复...但问题是学生包含一个基类属性“BaseMarks”,它没有“Grades”因此 s=>s。只会给出 GrandTotalMarks。我需要将标记转换为专业标记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2019-10-20
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多