2011-04-06 4 views
9

मेरे पास क्वेरी के लिए एक जटिल LINQ है, जो दो तालिकाओं में शामिल होता है - एक अपेक्षाकृत सरल है और ठीक काम करता है, लेकिन एक काफी जटिल है और मैं The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'GroupJoinLINQ - 'शामिल खंड में अभिव्यक्तियों में से एक का प्रकार गलत है'

हो रही है यह एक नहीं बल्कि लंबे क्वेरी है, और इसलिए मैंने सोचा कि अगर लाइन कि इस मुद्दे को हो रहा है के लिए पर्याप्त है मैं देखना चाहते हैं मैं इंटरनेट का उपयोग के साथ एक काम पर विकास कार्य करें:

join consignments in dc.Consignments 
    .FirstOrDefault(x => x.TripDate > dateFrom 
    && x.TripDate < dateTo 
    && x.DeliveryDepot == depot.Letter 
    && (x.DeliveryStatus == 2 || x.DeliveryStatus == 3)) 
    on new { Reg = s.VehicleReg, Depot = s.VehicleDepot } 
     equals new { Reg = consignments.VehicleReg, Depot = consignments.DeliveryDepot } 
    into con 

मैंने यह सुनिश्चित किया है कि डेटा प्रकार समान हैं, लेकिन यह अभी भी काम नहीं करता है। कोई विचार?

+0

धन्यवाद, कुछ और देखने के बाद, डिपो डेटाटाइप में से एक 'char (2)' है, और दूसरा 'nchar (10)' है। क्या इसका कारण होगा? – Chris

उत्तर

18

क्या आप सुनिश्चित हैं कि एस। वेहिक्युल डीपोट एक ही प्रकार के सामान के रूप में है। डिलीवरी डीपोट?

on new { Reg = s.VehicleReg, Depot = s.VehicleDepot } 
equals new { Reg = consignments.VehicleReg, Depot = consignments.DeliveryDepot } 
+3

यह मुझे तब तक सिरदर्द पैदा कर रहा था जब तक कि मैंने प्रत्येक आइटम को एक प्रकार निर्दिष्ट नहीं किया। '{आईडी = something.Id} {ID = otherthing.Id} के बराबर है, जहां आईडी टाइप है –

4

मुझे लगता है कि इस मुद्दे को इस हिस्से में है:

on new { Reg = s.VehicleReg, Depot = s.VehicleDepot } 
    equals 
    new { Reg = consignments.VehicleReg, Depot = consignments.DeliveryDepot } 

यकीन s.VehicleRegconsignments.VehicleReg के रूप में एक ही प्रकार है कि, और s.VehicleDepotconsignments.DeliveryDepot रूप में एक ही प्रकार है।

0

यह भी सुनिश्चित करें कि आपके सदस्य के नाम बिल्कुल वही मामले हैं। उदाहरण के लिए:

new { Reg = s.VehicleReg, Depot = s.VehicleDepot } 
    equals 
    new { Reg = consignments.VehicleReg, DEpot = consignments.DeliveryDepot } 

विफल हो जाएगा क्योंकि दूसरे अज्ञात प्रकार में डिपो अलग-अलग मामला है।

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