2011-08-14 91 views
3

我有兩個類子查詢問題

由名稱:人與資產

由關係型:一對多(一人由許多資產)

我寫了一個查詢通過使用子查詢linq.Nhibernate 2.2

var sub_q = from Asset a in SessionInstance.Linq<Asset>()       
      select a.Person.Id;    

var q = from Person p in SessionInstance.Linq<Person>() 
     where(sub_q.Contains(p.Id)) 
     select p;     

List<Person> list = q.ToList<Person>(); 

我看到在執行時間一個異常 例外的信息是:代碼應該不可達

當然下面的查詢是正確

var sub_q = from Asset a in SessionInstance.Linq<Asset>()       
      select a.Person.Id; 
List<Person> personList = sub_qsub_q.ToList<Person>; 
var q = from Person p in SessionInstance.Linq<Person>() 
     where (personList.Contains(p.Id)) 
     select p;     

List<Person> list = q.ToList<Person>(); 

但不適合性能

+3

有爲什麼要使用NHibernate 2特別的理由。 x而不是3.x? 3.x中的LINQ提供程序比2.x中的更強大 –

回答

0

好還是做

var q= (from Asset a in SessionInstance.Linq<Asset>()       
     select a.Person).ToList(); 
+0

我測試您的代碼 但是問題沒有解決 – Ehsan