2011-11-10 153 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

我認爲你需要替換的實際參數類型的通用typeParameter T的地方在代碼IList<T> list = query.List<T>();

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

然後,當您呼叫的ToDictionary指定鍵it.ie. IDictionary<string, Email> data = list.ToDictionary(x => x.emailId);

+0

儘管電子郵件不是一個對象;這是一個字符串。 –

+0

您需要有一個映射到查詢結果的Nhibernate會話對象。 –