2009-01-19 8 views
5

क्या लोडविथ का उपयोग करने का कोई तरीका है लेकिन लौटाए गए फ़ील्ड निर्दिष्ट करें?linq से sql लोड करने के साथ फ़ील्ड सीमित करने के बाद

उदाहरण के लिए

, अगर मैं दो तालिकाओं 1) उत्पाद 2) श्रेणियाँ

है और तरह

DataLoadOptions dlo = new DataLoadOptions(); 
dlo.LoadWith<Products>(d => d.Categories); 
db.LoadOptions = dlo; 

MyDataContext db = new MyDataContext(); 
var result = from d in db.Products 
      select d; 

कुछ करना जब मैं प्रोफाइलर में क्वेरी जाँच मैं देखता हूँ कि श्रेणियाँ तालिका वाली सभी पंक्तियां वापस आ रहे हैं। मुझे वास्तव में "नाम" फ़ील्ड चाहिए।

मुझे पता है कि मैं जॉइन का उपयोग करके क्वेरी को फिर से लिख सकता हूं लेकिन मुझे परिणाम सेट को "उत्पाद" डेटा प्रकार के रूप में वापस करने की आवश्यकता है, इसलिए मैं लोडविथ का उपयोग कर रहा हूं।

उत्तर

1

लोडविथ के साथ यह संभव नहीं है।

आप प्रक्षेपण में घोंसला वाली क्वेरी के साथ प्रयास कर सकते हैं, हालांकि यह धीमा हो जाएगा: प्रति प्रश्न 1 प्रश्न (इसलिए उत्पाद प्रति संबंधित संबंधित श्रेणी के लिए 1 क्वेरी)।

0

आप एक प्रक्षेपण का उपयोग कर सकते हैं, लेकिन आपको लगता है कि

select new {Order = order, ProductName = order.Product.Name, 
      CustomerName = order.Customer.Name, 
      OrderType = order.OrderType.Name } // etc 
के बाद anynomus प्रकार से निपटने के लिए की जरूरत है
संबंधित मुद्दे