2010-09-08 9 views
8

Hesaplar ve PaymentSystems arasında çoktan çoğa ilişkim var. Henüz bir hesaba atanmamış tüm PaymentSistemlerini listelemek istiyorum. Bunu başarmak için, ben Varlıkları sorguları için aşağıdaki LINQ kullanmak çalışıyorum: "System.NotSupportedException: sabit bir değer oluşturulamadı AncakVarlıklar sorgusuna "hariç" LINQ nasıl yapabilirim?

PaymentGatewayEntities pge = new PaymentGatewayEntities(); 
Account account = pge.Accounts.Single(item => item.id == accountId); 
var paymentSystems = pge.PaymentSystems.Except(account.PaymentSystems); 

, ben sonuçlarını görüntülemek için çalışıyor şu istisna olsun 'MyNamespace.Models.PaymentSystem' yazın.Bu bağlamda yalnızca ilkel türler ('Int32, String ve Guid' gibi) desteklenir. Neyi yanlış yapıyorum? EF4 kullanıyorum.

UPD: var paymentSystems = pge.PaymentSystems.Where (item =>! Item.Accounts.Contains (hesap)) aynı istisna ile sonuçlanır.

cevap

11

ben çözüm buldum galiba:

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

hileye neden olabilir. Aynı cevap

0

Hafif farklı bir varyantı

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