ठीक है, मुझे पता है कि यह एक हैक है, लेकिन यह एक छोटे से डेटा-मैनिपुलेशन प्रोजेक्ट के लिए था और मैं चारों ओर खेलना चाहता था। ;-)अज्ञात प्रकारों के कंपाइलर अनुकूलन
मैं हमेशा इस धारणा के तहत था कि संकलक सी # प्रोग्राम में उपयोग किए जाने वाले सभी अज्ञात प्रकारों की जांच करेगा और यदि गुण समान थे, तो यह केवल दृश्यों के पीछे एक वर्ग बनायेगा।
तो चलो कहते हैं कि मैं कुछ टाइप किया डेटासेट कि मैं से बाहर एक गुमनाम प्रकार बनाने के लिए चाहते हैं:
var smallData1 = new smallData1().GetData().Select(
x => new { Name = x.NAME, x.ADDRESS, City = x.CITY, State = x.STATE,
Zip = x.ZIP, Country = x.COUNTRY, ManagerName = x.MANAGER_NAME,
ManagerID = x.MANAGER_ID });
var smallData2 = new smallData2().GetData().Select(
x => new { x.Name, x.ADDRESS, x.City, x.State, x.Zip, x.Country,
x.ManagerName,x.ManagerID });
मैं अब smallData2.Except (smallData1) की तरह मजेदार बातें कर सकते हैं; आदि, और यह सब काम करता है।
अब, क्या हुआ अगर मैं गुमनाम प्रकार का एक बड़ा जोड़ी है:
var bigData1 = new BigAdapter1().GetData().Select(
x => new { x.FirstName, x.LastName, x.Address, x.City, x.State,
x.Zip, x.Country, x.Phone, x.Email, x.Website, x.Custom1, x.Custom2,
x.Custom3, x.Custom4, x.Custom5, x.Custom6, x.Custom7, x.Custom8, x.Custom9,
x.Custom10, x.Custom11, x.Custom12, x.Custom13, x.Custom14, x.Custom15,
x.Custom16, x.Custom17, x.Custom18, x.Custom19, x.Custom20, x.Custom21,
x.Custom22, x.Custom23, x.Custom24, x.Custom25, x.Custom26, x.Custom27,
x.Custom28, x.Custom29});
var bigData2 = new BigAdapter2().GetData().Select(
x => new { x.FirstName, x.LastName, x.Address, x.City, x.State, x.Zip,
x.Country, x.Phone, x.Email, x.Website, x.Custom1, x.Custom2, x.Custom3,
x.Custom4, x.Custom5, x.Custom6, x.Custom7, x.Custom8, x.Custom9, x.Custom10,
x.Custom11, x.Custom12, x.Custom13, x.Custom14, x.Custom15, x.Custom16,
x.Custom17, x.Custom18, x.Custom19, x.Custom20, x.Custom21, x.Custom22,
x.Custom23, x.Custom24, x.Custom25, x.Custom26, x.Custom27,
x.Custom28, x.Custom29});
अब मैं bigData2.Except (bigData1) करते हैं जब; संकलक शिकायत करता है:
Instance argument: cannot convert from
'System.Data.EnumerableRowCollection<AnonymousType#1>' to
'System.Linq.IQueryable<AnonymousType#2>'
क्यों? बहुत अधिक गुण, इसलिए संकलक निर्णय लेता है कि इसे अनुकूलित करने के लायक नहीं है?
धन्यवाद!
यूप, एडेप्टर थोड़ा अलग डेटा प्रकार लौट रहे हैं, लेकिन अंतर केवल टाइप किए गए डेटासेट का प्रकार है (वे विभिन्न डेटाबेस से आते हैं)। सभी गुण तार हैं, इसलिए मुझे लगा कि मैं सिर्फ एक अज्ञात प्रकार का उपयोग करता हूं और इससे मुझे डेटा को दो प्रकार के बजाय एक प्रकार का व्यवहार करने दिया जाएगा। – Pandincus
ओएमजी जहां से कम किया गया था। एर ... ठीक है, आप पूरी तरह से सही थे। प्रकारों में से एक वास्तव में अलग है। मुझे लगता है कि जब आप देर रात को कोड करते हैं तो क्या होता है: -ओ – Pandincus