简体   繁体   English

带有linq查询和groupBy的NotSupportedException

[英]NotSupportedException with linq query and groupBy

I get a "NotSupportedException" when running this Linq query. 运行此Linq查询时,我收到“NotSupportedException”。 "Specified method is not supported." “不支持指定的方法。” What method? 什么方法? Even with "Count()" commented out, the error is the same. 即使将“Count()”注释掉,错误也是一样的。 Null Inner Exception. 空内部异常。

Stack Trace: 堆栈跟踪:

at Hydra.WPF.ViewModels.AddressListViewModel._primaryMemberListWorker_DoWork(Object sender, DoWorkEventArgs e) in M:\\Projects\\Hydra\\WPF\\ViewModels\\AddressList\\AddressListViewModel.cs:line 1377 at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument) at Hydra.WPF.ViewModels.AddressListViewModel._primaryMemberListWorker_DoWork(Object sender,DoWorkEventArgs e)位于M:\\ Projects \\ Hydra \\ WPF \\ ViewModels \\ AddressList \\ AddressListViewModel.cs:第1377行,位于System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

The SQL 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: 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);

How do you produce your criteria variable? 你如何产生你的标准变量? If this is itself a deferred query or something else it sounds like the likely culprit. 如果这本身就是一个延迟查询或其他东西,它听起来像是可能的罪魁祸首。 What happens if you do a var criteriaId = criteria.AddressList.Id; 如果你做var criteriaId = criteria.AddressList.Id;会发生什么? before your query, and provides criteriaId to your query instead of your criteria.AddressList.Id? 在查询之前,并为您的查询而不是您的criteria.AddressList.Id提供criteriaId?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM