2011-08-15 14 views
11

लिए मुझे लगता है मैं सभी समूहों को एक विशेष उपयोगकर्ता के अंतर्गत आता है प्राप्त करने के लिए कोशिश कर रहा हूँ name, desc के साथ एक समूह डोमेन मॉडल और users (समूह से संबंधित) के संग्रहLINQ संस्थाओं EF4

है।

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; 

मैं निम्नलिखित त्रुटि मिलती है जब मैं क्वेरी

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

किसी भी मदद appreciated.Thanks है निष्पादित करने के लिए प्रयास करें: यह मेरा LinQ बयान है!

+0

क्यों नहीं छोड़ कि पिछले खंड शामिल है और लपेट कि आपके चयन में? – Rig

+0

रिग, क्या आप मुझे दिखा सकते हैं कि क्वेरी कैसा दिखाई देगी? – Lavan

उत्तर

14

उपयोगकर्ता ऑब्जेक्ट के लिए शून्य परीक्षण निकालें, वैसे भी यह आलसी लोड हो गया है, क्या आपके उपयोगकर्ता वर्चुअल हैं? अगर ऐसा है, यह आलसी-लोडेड है, यह शून्य परीक्षण दूर करने के लिए ठीक है तो

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

माइकल, यह एक ही त्रुटि – Lavan

+0

माइकल फेंकता है, वास्तव में काम करने वाले शून्य परीक्षण को हटा रहा है। – Lavan

+0

क्या आपने 'p.Users! = Null' को हटाने का प्रयास किया है? –

0

क्या आप विपरीत तरीके से नहीं जा सकते?

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

उम्मीद है कि इससे मदद मिलती है।

+0

धन्यवाद एंटोन, लेकिन मुझे मौजूदा मॉडल को बदलने की अनुमति नहीं है। – Lavan

संबंधित मुद्दे