linq - Parse string as DateTimeOffset in Expression<Func<T, bool>> -
अरे, मैं एक अभिव्यक्ति & lt; Func & lt; T, bool & gt; & gt;
बनाने की कोशिश कर रहा हूं जो कि एक स्ट्रिंग संपत्ति को कनफेट किया जाता है / एक डेटटाइम ऑफसेट में डाली जाती है, ताकि डेटटाइम ऑफसेट ऑपरेशन उस पर किया जा सके।
हम अपने डेटा प्रदाता के रूप में Linq2SQL का प्रयोग कर रहे हैं, जो स्ट्रिंग को डेटटाइमऑफसेट के समकक्ष समनुरूप रूपांतरित करने का समर्थन करता है। आदर्श रूप से मैं सीधे IQueryable डेटा स्रोत के भीतर अभिव्यक्ति का मूल्यांकन करना चाहता हूं, और एक IEnumerable के रूप में मेमोरी में नहीं।
मैं दूर करने की कोशिश की एक उदाहरण के लिए नीचे देखें:
सार्वजनिक वर्ग MyClass {सार्वजनिक स्ट्रिंग मायवल्यू; } अभिव्यक्ति & lt; Func & lt; MyClass, bool & gt; & gt; फ़िल्टर = एमसी = & gt; दिनांकटाइमऑफ़सेट। पर्स (एमसीएम वेल्यू) & gt; नया दिनांक समयऑफसेट (2007,1,1);
दुर्भाग्य से, फ़िल्टर की इस परिभाषा में स्मृति मूल्यांकन होता है।
nvarchar
not datetime
है, मुझे लगता है कि आप भाग्य से बाहर हैं LINQ2SQL प्रदाता जानता है कि यह nvarchar
डेटा है, और इसलिए वह मूल एसक्यूएल अभिव्यक्तियां उत्पन्न नहीं करेगा जो इसके साथ datetime
मान के रूप में काम करती हैं। ईमानदार, मैं इसे हाथों से तैयार किए गए कूल्हे SqlCommand
ऑब्जेक्ट के साथ करने का एक सुरक्षित तरीका भी नहीं देख सकता आपको वास्तव में मेमोरी में डेटा को स्ट्रिंग
के रूप में पढ़ना चाहिए, फिर उसे DateTimeOffset
में कनवर्ट करना चाहिए, फिर उसे मैन्युअल रूप से मेमोरी में फिल्टर करना चाहिए। यदि आप इस स्तंभ पर मूल एसक्यूएल फ़िल्टरिंग चाहते हैं, तो आपको तालिका स्कीमा को बदलना होगा।
Comments
Post a Comment