我在Accounts和PaymentSystems之间有多对多的关系。我想列出所有尚未分配给帐户的PaymentSystems。为此,我正在尝试使用以下LINQ to Entities查询:
PaymentGatewayEntities pge = new PaymentGatewayEntities();
Account account = pge.Accounts.Single(item => item.id == accountId);
var paymentSystems = pge.PaymentSystems.Except(account.PaymentSystems);
但是,尝试显示结果时出现以下异常:“System.NotSupportedException:无法创建类型为'MyNamespace.Models.PaymentSystem'的常量值。仅原始类型(例如,例如Int32,String和Guid')在这种情况下受支持。”我究竟做错了什么?我正在使用EF4。
UPD:var paymentSystems = pge.PaymentSystems.Where(item =>!item.Accounts.Contains(account))也会导致相同的异常。
最佳答案
看起来我已经找到了解决方案:
var paymentSystems = pge.PaymentSystems.Where(
item => !item.Accounts.Any(t => t.id == accountId));
似乎可以解决问题。