public class Feedback
{
public virtual int Id { get; private set; }
public virtual string ContentText { get; set; }
public virtual DateTime FeedbackDate { get; set; }
public virtual Student student { get; set; }
}
私のフィードバッククラス。タイプがXIある場合 次のルール (Students.Feedbackでソートされます:私はメソッドSORTBYとコースに学生を並べ替えたい私の学生のクラスnHibernate(C#)で数式をソートする
public class Course
{
public virtual int Id { get; set; }
// bla bla bla
public virtual IList<Student> Students { get; private set; }
public Course()
{
Students = new List<Student>();
}
public IList<Student> SortBy(string type)
{
// some other sorting
else if (type.Equals("popular")){
sortedStudents = session.CreateCriteria(typeof(Student))
.CreateAlias("Student", "s")
.CreateAlias("s.Feedback", "f")
.AddOrder(Order.Desc(--------))
.List();
}
return (IList<Student>) sortedStudents;
}
}
マイコースクラス
が
public class Student
{
public virtual int Id { get; private set; }
public virtual int NumberOfStars { get; set; }
public virtual IList<Feedback> Feedbacks { get; private set; }
public Student()
{
Feedback = new List<Feedbacks>();
}
}
.Count)* 5 + Student.NumberOfStars)
どのようにですか? LINQ
IList sortedStudents = (from student in this.Students
where student.Course == this
orderby (student.Feedbacks.Count*3 + student.NumberOfStars)
select student).ToList();
基準にする必要がありますか? HQLでははるかに簡単です。 –
HQLとCriteriaの両方で記述できますか? – gandil
もちろん、クエリごとに必要なものを使用できます。動的クエリが必要な場合を除き、私はHQLを好んでいます(これは、構造が実行時に定義されている場合を意味します)。 –