2013-01-14 14 views
7

कॉन्सर्ट नाम, दिनांक और स्थान (जो किसी अन्य तालिका पर संग्रहीत है) प्राप्त करने का प्रयास कर रहा है लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है, लेकिन यह वापस शून्य खींच रहा है।linq क्वेरी एक से एक

var test = from f in db.Concert 
      where f.Name.StartsWith(concertName) 
      select new 
      { 
       f.Name, 
       f.StartDateTime, 
       venues = from v in db.Venues 
         where v.ID == f.VenueID 
         select v.Address 
      } 

संपादित करें:

स्थान और कॉन्सर्ट के बीच के रिश्ते कि कॉन्सर्ट एक VenueID कि स्थान आईडी से संबंधित है। मुझे एक स्ट्रिंग वापस पास करने की जरूरत है।

foreach (var e in test) 
{ 
    html += "<div> e.Name +":" + e.Address </div>; 
} 
+0

आप नेविगेशन गुण का उपयोग करना चाहिए। ('f.Venue.Address') – SLaks

+0

क्या यह 'स्टार्ट्सथथ' या 'युक्त' है? – Romoku

+3

क्या Tooring()? के लिए कोई ज़रूरत है, क्या आपके मॉडल में स्थानों और संगीत कार्यक्रमों के बीच कोई भी वास्तविकता है? अधिक जानकारी प्रदान करें। – MuhammadHani

उत्तर

13

आप समूह का उपयोग कर सकते कॉन्सर्ट से संबंधित परिणामों की

var test = from f in db.Concert 
      join v in db.Venues on f.VenueID equals v.ID into g 
      where f.Name.StartsWith(concertName) 
      select new 
      { 
       f.Name, 
       f.StartDateTime, 
       Venues = g.Select(x => x.Address) 
      }; 

प्रयोग सभी स्थानों प्राप्त करने के लिए शामिल हो:

foreach (var e in test) 
{ 
    // e.Name 
    // e.StartDateTime 

    foreach(var address in e.Venues) 
     // address 
} 
+1

बस स्थान = g.elect (x => v.Address) को स्थान = g.elect (x => x) में बदलना पड़ा एड्रेस) यह बहुत अच्छा काम कर रहा है। यह 1: 1 रिश्ते है इसलिए मुझे नहीं लगता कि मुझे दूसरे प्रस्ताव की आवश्यकता होगी। धन्यवाद! – datatest

+0

@datatest धन्यवाद! और टाइपो के लिए खेद है, यकीन है कि यह 'x.Address' होना चाहिए –

0

यदि आपके पास विदेशी कुंजी संबंध स्थापित है, तो आपको स्थानों के लिए मैन्युअल रूप से क्वेरी करने की आवश्यकता नहीं है। उस स्थिति में आपको f.Venue का उपयोग करने वाले स्थान मिलते हैं।

+0

के साथ मेल खाता है, मैं अच्छी तरह से कर सकता हूं। वेन्यू, मैं f.Venue.Address नहीं कर सकता। और सुनिश्चित नहीं है कि पता कैसे प्राप्त करें – datatest

+0

आप क्यों नहीं कर सकते? – recursive

2

ऐसा लगता है कि कॉन्सर्ट और स्थानों के बीच 1: 1 संबंध मानना ​​सुरक्षित है। यह देखते हुए, आप इसके बजाय join का उपयोग कर सकते हैं।

var test = from f in db.Concert 
      join v in db.Venues on v.ID equals f.VenueID 
      where f.Name.StartsWith(concertName) 
      select new 
      { 
       f.Name, 
       f.StartDateTime, 
       v.Address 
      }; 
+0

आप 1: 1 रिश्ते को सही मानते हैं। यद्यपि मैं आपके कोड को आजमा रहा हूं, मैं वी और एफ पर नाम हल नहीं कर सकता ... – datatest

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