var list =
from a in TableA
select new B {
Count = a.TotalCount,
Title = a.Title
};
आप अपने चुने हुए खंड में बी का एक उदाहरण नया बनाते हैं, और सी # 3.0 में इनलाइन प्रॉपर्टी असाइनमेंट सुविधा का उपयोग करके गुणों को असाइन करते हैं।
इनलाइन मैपिंग के फायदे आपके लिंक कथन के स्थगित निष्पादन से आता है। लिंक संशोधित कथन को मैप करेगा, और इसे आपके IQueryable से निष्पादित करेगा। उदाहरण के लिए:
public class ClassA
{
public int TotalCount;
public string Title;
}
public class ClassB
{
public int Count;
public string Title;
}
public IQueryable<ClassB> FetchAllOfClassB()
{
var list =
from a in TableOfClassA
select new ClassB {
Count = a.TotalCount,
Title = a.Title
};
return list.AsQueryable();
}
तकनीकी तौर पर, AsQueryable()
थोड़ा अनावश्यक है। कभी-कभी मैं इसे एक बिंदु बनाने के लिए इसका उपयोग करता हूं, अन्य कहते हैं कि यह बिल्कुल जरूरी है। कोई भी कम नहीं, सूची वस्तु स्वयं क्लासबी के IQueryable है।
फिर आप चेन को आगे बढ़ाकर FetchAllOfClassB()
पर कॉल कर सकते हैं और IQuerable का उपयोग कर सकते हैं। यह बहुत चिकना और कुशल है।
आपका प्रश्न अस्पष्ट है ... ए और बी के बीच संबंध क्या है? –
अनिवार्य रूप से वे एक ही चीज़ का प्रतिनिधित्व करते हैं। मेरे वास्तविक मामले में, ए लिंकक से एसक्यूएल द्वारा उत्पन्न एक वर्ग है जब मैंने एसक्यूएल वर्ग में एक लिंक बनाया और इसमें एक टेबल जोड़ा। चूंकि कक्षा ए में लिंक और लिंक से एसक्यूएल निर्भरता है, इसलिए मैं इसे अपने अनुप्रयोगों में बेनकाब नहीं करना चाहता, इसलिए मैं कक्षा बी बनाता हूं, जिसमें कोई निर्भरता नहीं है। तो मुझे कक्षा ए उदाहरणों की सूची से कक्षा बी के उदाहरणों की एक सूची तैयार करने की आवश्यकता है। – Jeremy