कोड आप सूचीबद्ध कि:
from c in company
from e in c.Employees
select e;
... एक सूची का उत्पादन करेगा company
परिवर्तनीय में प्रत्येक कंपनी के लिए प्रत्येक कर्मचारी का। यदि कोई कर्मचारी दो कंपनियों के लिए काम करता है, तो उन्हें दो बार सूची में शामिल किया जाएगा।
जब आप c.Employees
कहते हैं तो केवल "शामिल" हो सकता है। एक एसक्यूएल समर्थित बैक प्रदाता में, यह Company
तालिका से Employee
तालिका में आंतरिक प्रवेश में अनुवाद करेगा।
हालांकि
, डबल from
निर्माण अक्सर प्रदर्शन करने के लिए "मिलती है" मैन्युअल रूप से, जैसे इतना प्रयोग किया जाता है:
from c in companies
from e in employees
where c.CompanyId == e.CompanyId
select e;
इस कोड को आप पोस्ट के रूप में एक समान प्रभाव, के आधार पर संभावित सूक्ष्म अंतर के साथ होता है क्या employees
चर शामिल हैं। यह भी निम्नलिखित join
के बराबर होगा:
from c in companies
join e in employees
on c.CompanyId equals e.CompanyId
select e;
आप एक कार्तीय उत्पाद चाहता था अगर, हालांकि, आप बस where
खंड को दूर कर सकता है। (यह कुछ भी लायक बनाने के लिए, आप शायद select
थोड़ा भी बदलने के लिए है, हालांकि चाहते हैं।)
from c in companies
from e in employees
select new {c, e};
यह पिछले क्वेरी आप कंपनी और कर्मचारियों के हर संभव संयोजन देना होगा।
लिंक-टू-ऑब्जेक्ट्स, -एसक्ल, -इन्टिटीज? इन-ऑब्जेक्ट्स, यह शामिल नहीं है, लेकिन 'SelectMany' ऑपरेशन' है। दूसरों में, डेटा के आधार पर इसे बाएं या भीतरी में अनुवादित किया जा सकता है। –
@ एंथनी: मैंने LINQ का इतना उपयोग नहीं किया है। तो मेरा सवाल सामान्य रूप से सामान्य था और किसी भी विशिष्ट प्रदाता तक ही सीमित नहीं था। हालांकि, आखिरकार, मैं शायद LINQ से इकाइयों के साथ समाप्त हो जाऊंगा। –