次のドメイン オブジェクトがあります。
public class Data
{
public virtual int ID { get; set; }
public virtual DateTime TimeStamp { get; set; }
public virtual int Value { get; set; }
public virtual Channel Channel { get; set; }
}
Rhino.Commons のリポジトリを使用しています。一定期間、いくつかのチャネルの値の合計を選択する必要があります。これらの値は、チャネル ID 順に並べる必要があります。次のクエリを使用します(リポジトリメソッドで):
var criteria = DetachedCriteria.For<LiveData>()
.Add(Restrictions.Le("TimeStamp", startDate))
.Add(Restrictions.Ge("TimeStamp", endDate))
.Add(Restrictions.InG<Channel>("Channel", channels))
.SetProjection(Projections.Sum("Value"))
.SetProjection(Projections.GroupProperty("Channel"));
long[] result = ReportAll<long>(criteria, Projections.ProjectionList(), Order.Asc("Channel"));
このクエリは長い数値のリストを返さないため、最後の行でエラーが発生します。次のようなオブジェクトのリストを返します (それで動作します):
public class ResultValue
{
public virtual Channel Channel { get; set;}
public virtual int Value { get; set; }
public ResultValue()
{
}
public ResultValue(int value, Channel channel)
{
this.Value = value;
this.Channel = channel;
}
}
これは、グループ化を行う基準に Projections.GroupProperty("Channel") プロジェクションを追加したためです。投影の 1 つ (私のサンプルからの Projections.GroupProperty("Channel")) を結果セットから削除する方法、または投影なしでグループ化を追加する方法はありますか?