集計の結果と追加の列を返す単純な集計クエリを実行しようとしています。この投稿 -> Castle ActiveRecordを使用したカスタム クエリには、これを実現する方法についての良い例がありましたが、うまくいかないようです。ActiveRecordMediator.ExecuteQuery はオブジェクトの ArrayList を返すようです (私が期待する object[] の ArrayList ではなく)。また、ICollection にキャストしようとすると、無効なキャストを訴える実行時エラーが発生します。以下のコード、助けていただければ幸いです(手書きのSQLを使用したくない)。
HqlBasedQuery query = new HqlBasedQuery(typeof(Something), @"select count(1),
p.Name from Something p
where p.SomeDate > :date
order by p.Name
group by p.Name");
query.SetParameter("date", new DateTime(2009, 1, 1));
var results = from summary in
(ICollection<object[]>)ActiveRecordMediator.ExecuteQuery(query)
select new {
Count = (int)summary[0], Name= (string)summary[1]
};
「from summary in」の後の行は、無効なキャスト例外をスローする行です。
(言及するのを忘れました: VS2008、.NET 3.5SP1、ActiveRecord 1.0RC3、NHibernate 1.2 を使用)