Как мне сделать запрос «За исключением» LINQ to Entities? - PullRequest
9 голосов
/ 08 сентября 2010

У меня есть отношения многие ко многим между Аккаунтами и Платежными системами.Я хочу перечислить все платежные системы, которые еще не привязаны к учетной записи.Чтобы добиться этого, я пытаюсь использовать следующие запросы 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)) приводит к тому же исключению.

Ответы [ 2 ]

12 голосов
/ 08 сентября 2010

Похоже, я нашел решение:

var paymentSystems = pge.PaymentSystems.Where(
    item => !item.Accounts.Any(t => t.id == accountId));

кажется, добивается цели.

0 голосов
/ 11 декабря 2015

Немного другой вариант того же ответа:

var paymentSystems = pge.PaymentSystems.Where(
    item => item.Accounts.All(t => t.accountId != t.ID));
...