2011-11-10 13 views
0

で返す行私は、クエリからの戻り値として辞書を取得しようと、私は次のように多くの幸運を持っていなかった よ:流暢NHibernateは:辞書

IQuery query = session.CreateQuery("SELECT Email, COUNT(Id) as IdCount FROM AccountDataModel WHERE Email = :Email") 
         .SetParameter(":Email", model.Email); 

IList<T> list = query.List<T>(); 

IDictionary<string, object> data = list.ToDictionary<string, object>(x => x); //Error, no method argument matches. 

ToDictionary方法が求められますタイプのFuncの場合。私はFuncの定義を見つけた、here

はこれを見た後、私は次のことを試してみました:

list.ToDictionary<string, object>(y => y.As<string>().As<object>()); 

私はプロセスでエラーが発生する...

これを行うにはストレートな方法はありますか、それはハックの詳細ですそれを促進する方法論?

答えて

0

は、私はあなたがit.ie.のためのキーを指定ToDictionaryを呼び出しているときにIList<T> list = query.List<T>();

何かその後IList<Email> list = query.List<Email>();

のようなコードにジェネリックtypeParameter Tの代わりに実際のParameterTypeを代用する必要があると思います。 IDictionary<string, Email> data = list.ToDictionary(x => x.emailId);

+0

電子メールはオブジェクトではありません。それは文字列です。 –

+0

クエリ結果にマップするNhibernateセッションオブジェクトが必要です。 –