0

タスク表:

id AssigneeID Name
1    2        TODO1
2    3        TODO2
3    1        TODO3

担当者テーブル:

id Name Status
1  Max  Available
2  Ryan NotAvailable
3  Lisa NotAvailable

私のjqgridテーブルは次のようなものです:

Name   Assignee Status
TODO1  Ryan     NotAvailable
TODO2  Lisa     NotAvailable
TODO3  Max      Available

ステータス列を並べ替えたいので、これを行いました:

var query = scope.Session.QueryOver<Task>().Where(s=>s.Id!=null);

var x = query.Select(Projections.Distinct(Projections.Property<Task>(task => task.AssigneeID))).AddSortExpression("Status desc").List<Assignee>();

ただし、Status は Task テーブルではなく、Assignee テーブルにあるため、これはエラーを返します。

さらに、コードで GROUP BY を使用するにはどうすればよいですか。ステータスを並べ替えようとするとエラーが発生すると思うからです。Ryan の NotAvailable と Lisa の NOT Available のどちらを先に置くべきかわかりません...助けてください...

4

1 に答える 1

0

まず、タスクと担当者の関連付けを NH に認識させる必要があります。それでは、なぜgroupByが必要なのですか

class Task
{
    public virtual Assignee Assignee { get; set; }
}

これらの 3 つのプロパティのみが必要な場合

SomeDto dto = null;
Assignee assignee = null;
session.QueryOver<Task>()
    .JoinAlias(task => task.Assignee, () => assignee)
    .OrderBy(() => assignee.Status)
    .SelectList(list => list
        .Select(task => task.Name).WithAlias(() => dto.Name)
        .Select(() => assignee.Name).WithAlias(() => dto.Assignee)
        .Select(task => assignee.Status).WithAlias(() => dto.Status))
    .TransformUsing(Transformers.AliasToBean<SomeDto>())
    .List<SomeDto>()

または、タスク全体と担当者オブジェクトを返す場合

Assignee assignee = null;
var tasks = session.QueryOver<Task>()
    .JoinAlias(task => task.Assignee, () => assignee)
    .OrderBy(() => assignee.Status)
    .List();
于 2012-07-18T12:43:47.310 に答える