2012-04-05 37 views
5

का उपयोग कर Include की एक स्ट्रिंग आधारित अधिभार में हमारे द्वारा निर्दिष्ट संग्रह और फिर एक संदर्भ एक बस को सही क्रम में प्रासंगिक नेविगेशन गुण निर्दिष्ट करके नीचे स्तर शामिल करने के लिए शामिल करें Include लैम्ब्डा अभिव्यक्ति का उपयोग करता है की, हम भी एक Select बयान में सक्षम करने के लिए ऊपर क्वेरी निर्दिष्ट करने के लिए उपयोग करना चाहिए:लैम्ब्डा अभिव्यक्ति

query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference)). 

क्यों नहीं होगा निम्नलिखित काम:

012,
query.Include.(e => e.Level1Collection.Level2Reference) 

आप

उत्तर

7

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

जब आप फ़ीड करते हैं तो एक स्ट्रिंग स्टेटमेंट शामिल करें, यह जानता है कि यह जानने के लिए प्रतिबिंब का उपयोग करना है कि वैसे भी गुणों को शामिल करना है और संकलन पर कोई टाइप-जांच नहीं है। अंतर्निहित विधि जानता है कि जब यह स्ट्रिंग में संग्रह संपत्ति के बाद एक बिंदु को देखता है, तो उसे संग्रह के बजाय वस्तुओं के गुणों को संग्रहित करना चाहिए, संग्रह के बजाए अगली संदर्भित संपत्ति के लिए संग्रह ("इस मामले में स्तर 2 संदर्भ")।

या दूसरे शब्दों में: यह जादू है। :)

+0

समझ में आता है। बहुत सराहना की – user702769

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