2011-08-15 9 views
11

Varlıkları için ben belirli bir kullanıcının ait olduğu tüm grupları almak için çalışıyorum bir Grupları alanı name, desc ile model ve (gruba ait) users toplanmasıLinq EF4'ü

var. i sorgu

Cannot compare elements of type 'System.Collections.Generic.ICollection`1'. Only primitive types (such as Int32, String, and Guid) and entity types are supported. 

Herhangi bir yardım appreciated.Thanks olduğunu yürütmeye çalıştığınızda aşağıdaki hatayı alıyorum

var results = from p in AuthorizationService.UnitOfWork.Groups.FindAll() 
          where 
           (p.Users != null && p.Users.Select(u => u.Id).Contains(CurrentUser.Id)) 
          select p.Name; 

: Bu benim LinQ ifadedir!

+0

Neden o son maddesini içerir ve seçme içine sarın düşürmeyin boş testini kaldırmak için Tamam, tembel-dolu mu? – Rig

+0

rig, sorgunun nasıl görüneceğini bana gösterebilir misin? – Lavan

cevap

14

Kullanıcılar nesnesi için null testini kaldırın, her ne kadar tembel yüklenmiş, Kullanıcılar sanal mı? Eğer öyleyse, o daha sonra

var results = 
from p in AuthorizationService.UnitOfWork.Groups.FindAll() 
where 
    p.Users.Any(u => u.Id == CurrentUser.Id) 
select p.Name; 
+0

Michael, aynı hatayı – Lavan

+0

Michael, null testini gerçekten çalıştırarak kaldırıyor. – Lavan

+0

'p.Users! = Null' öğesini kaldırmayı denediniz mi? –

0

Aksine gidemez misin?

var results = AuthorizationService.UnitOfWork.Users.Include("Groups").First(u => u.ID == CurrentUser.Id).Select(u => u.Groups); 

Bu yardımcı olur umarım.

+0

Teşekkürler anton, ancak mevcut modeli değiştirmem mümkün değil. – Lavan