2012-06-29 4 views
5

Viene visualizzato un messaggio "NotSupportedException" quando si esegue questa query di Linq. "Il metodo specificato non è supportato." Quale metodo? Anche con "Count()" ha commentato, l'errore è lo stesso. Null Inner Exception.NotSupportedException con query linq e groupBy

dello stack:

a Hydra.WPF.ViewModels.AddressListViewModel._primaryMemberListWorker_DoWork (Object sender , DoWorkEventArgs e) in M: \ Projects \ Hydra \ WPF \ ViewModels \ AddressList \ AddressListViewModel.cs: linea 1377 a System.ComponentModel.BackgroundWorker.WorkerThreadStart (Object argomento)

La query SQL:

Select * From _Members 
Inner Join AddressDetailsCCN a on a.MemberId=_Members.MemberID 
Inner Join 
    (
    Select Address+Address2 as CombinedAddress 
    From AddressDetailsCCN Where ListId=84 
    group by Address+Address2 
    Having COUNT(*)>1 
) B on B.CombinedAddress=A.Address+A.Address2 
Where CombinedAddress is not null AND CombinedAddress!='' AND a.ListId=84 
Order by ClientID, CombinedAddress 

Linq:

var grouped = 
    (from mem in session.Query<Member>() 
    join detail in session.Query<Detail>() on mem.Id equals detail.Member.Id 
    join d2 in (from d3 in session.Query<Detail>() 
       where d3.AddressList.Id == criteria.AddressList.Id 
       group d3 by d3.Address + d3.Address2 into x 
       where x.Count() > 1 
       select x) on detail.Address+detail.Address2 equals d2.Key 
    where detail.AddressList.Id==criteria.AddressList.Id 
    select mem); 
+0

Quale riga è 1377? – walther

+6

L'implementazione di linq di Hibernate ha problemi con gli operatori di base. Mi chiedo quando avremo finalmente un'implementazione decente ... –

+0

1377 è solo la chiamata al metodo di repository che ospita questo metodo. – Seraph812

risposta

0

Come si fa a produrre i tuoi criteri variabili? Se questo è di per sé una query differita o qualcos'altro suona come il probabile colpevole. Che cosa accade se prima della query esegui uno var criteriaId = criteria.AddressList.Id; e fornisci criteriId alla query anziché ai tuoi criteri.AddressList.Id?