我在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));

似乎可以解决问题。

10-08 11:54