2012-03-30 8 views
12

नीचे कुछ सी # कोड का एक कट डाउन उदाहरण है जो कुछ लिनक जुड़ने के दौरान संकलित नहीं हो सकता है। क्या किसी को पता है कि यह संकलित क्यों नहीं करता है?शामिल होने के साथ संकलन करने के लिए C# linq क्वेरी नहीं मिल सकती

प्रकार तर्क क्वेरी से नहीं लगाया जा सकता

त्रुटि है

(मेरा असली कोड में Fetch() रिटर्न एक IQueryable<T>)

using System.Collections.Generic; 
using System.Linq; 

namespace LinqJoin 
{ 
    public class DataRepository<T> 
    { 
     public IList<T> Fetch() 
     { 
      return new List<T>(); 
     } 
    } 

    internal class SSOUser 
    { 
     public int Id { get; set; } 
    } 

    internal class UserRole 
    { 
     public int SSOUserId { get; set; } 
     public int RoleId { get; set; } 
    } 

    internal class Role 
    { 
     public int RoleId { get; set; } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      var users = new DataRepository<SSOUser>().Fetch(); 
      var userroles = new DataRepository<UserRole>().Fetch(); 
      var roles = new DataRepository<Role>().Fetch(); 

      var result = from u in users 
        join ur in userroles on u.Id equals ur.SSOUserId 
        join r in roles on r.RoleId equals ur.RoleId 
        select u; 

     //var x1 = users.Join(userroles, u => u.Id, ur => ur.SSOUserId, (u, ur) => new { User = u, UserRole = ur}).Join(roles, x => x.UserRole.RoleId, r => r.RoleId, res => res.User); 
     } 
    } 
} 

उत्तर

31

इस में शामिल होने के गलत तरीका है दौर:

join r in roles on r.RoleId equals ur.RoleId 

यह होना चाहिए:

join r in roles on ur.RoleId equals r.RoleId 

रेंज चर परिचय हमेशा equals की सही हाथ की ओर हो गया है। आम तौर पर संकलक आपको यह बताने के बारे में बहुत अच्छा है कि त्रुटि संदेश में, आपको दिमाग ...

+0

त्वरित उत्तर के लिए बहुत बहुत धन्यवाद। आप विश्वास नहीं करेंगे कि उस पर कितना समय बर्बाद हो गया है। यह अच्छा होगा अगर कंपाइलर थोड़ा और सहायक हो, लेकिन "टियर वेरिएबल जो आपको पेश करता है, हमेशा बराबर के दाएं हाथ पर होना चाहिए" के बारे में आपकी युक्ति है, अब मैं स्मृति में प्रतिबद्ध हूं। –

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