2011-01-04 1 views
4

エラー:LINQのは、NHibernateの明確な()への「式のタイプはサポートされていません」私は、次のコードを持っている

var data = (from v in this.GetSession().Query<WorkCellLoadGraphData>() 
        where v.WorkCellId == "13" 
        select 
         new WorkCellLoadGraphData 
          { 
           RowId = v.RowId, 
           WorkCellId = v.WorkCellId, 
           WorkCellName = v.WorkCellName, 
           WorkCellGroupId = v.WorkCellGroupId, 
           WorkCellGroupName = v.WorkCellGroupName 
          }); 
     return data.Distinct(); 

私は明確な()拡張メソッドを呼び出さない場合は、私は全く問題がありません。私はこの出くわしたいくつか検索した後

Expression type 10005 is not supported by this SelectClauseVisitor.

:しかし、私は呼んで個別()メソッドをすれば、私は次のエラーを取得する

https://nhibernate.jira.com/browse/NH-2380

をしかし、あなたが見ることができるように私は戻っていませんよ匿名型。

他の誰かがこの問題に遭遇しましたか?もしそうなら、それをどうやって解決しましたか?

デビッド

+0

私がアサインメントを「列挙」しない場合、つまりselect vを使用した場合、distinctは何の問題も生じません。 – DavidS

答えて

0

これは動作しますか?クエリで匿名型を使用することで、Hibernateがデータベース内の別のクエリを作成できるようになります。独自の型を使用する場合は、クラス 'Equalsメソッドで比較を使用する必要があります。

var data = (from v in this.GetSession().Query<WorkCellLoadGraphData>() 
       where v.WorkCellId == "13" 
       select 
        new 
         { 
          v.RowId, 
          v.WorkCellId, 
          v.WorkCellName, 
          v.WorkCellGroupId, 
          v.WorkCellGroupName 
         }) 
         .Distinct() 
         .Select (v => 
         new WorkCellLoadGraphData{ 
          RowId = v.RowId, 
          WorkCellId = v.WorkCellId, 
          WorkCellName = v.WorkCellName, 
          WorkCellGroupId = v.WorkCellGroupId, 
          WorkCellGroupName = v.WorkCellGroupName}); 
+0

NHibernateでもう作業していないので、これがうまくいくかどうかはわかりません。しかし、うまくいけば、これは誰かを助けるだろう – DavidS

関連する問題