2013-09-26 10 views
5

मेरे पास Linq परिणाम है जिसके परिणामस्वरूप मुझे DateTime से केवल Date चुनने की आवश्यकता है।
मेरे क्वेरी इस प्रकार है:लिंक - दिनांक समय से दिनांक चुनें

var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE 
        where xx.USER_ID == userid && xx.IS_ACTIVE == 1 
        select new 
        { 
         xx.TEMPLATE_ID, 
         xx.TEMPLATE_NAME, 
         //CREATED_DATE = xx.CREATED_DATE.Value.Date 
         //CREATED_DATE = EntityFunctions.TruncateTime(xx.CREATED_DATE) 
         xx.CREATED_DATE 
        }).ToList(); 

कि संभव है? किसी भी मदद की सराहना की जाएगी।

CREATED_DATE - `datetime` datatype 

वास्तव में, मैं एक DataSource के रूप में एक नियंत्रण करने के लिए यह बाध्यकारी रहा हूँ और नियंत्रण दोनों Date and Time .लेकिन प्रदर्शित कर रहा है मैं केवल date प्रदर्शित करना चाहते हैं।

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

+1

और समस्या क्या है? – I4V

+0

xx.CREATED_DATE.ToShortDateString()? CREATED_DATE क्या प्रारूप है? – andrewb

उत्तर

15

यदि यह प्रस्तुति उद्देश्य के लिए है, तो आप DataFormatString संपत्ति का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप एक ग्रिड व्यू को डेटास्रोत बाध्य कर रहे हैं, तो आप ऐसा कर सकते हैं;

<asp:BoundField DataField="CREATED_DATE" ... 
    DataFormatString="{0:d}" ../> 

वरना आप EntityFunctions.TruncateTime() जो समय भाग के बिना इनपुट तारीख रिटर्न उपयोग कर सकते हैं।

EntityFunctions.TruncateTime(xx.CREATED_DATE) 

आपकी क्वेरी इस तरह की होगी;

var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE 
        where xx.USER_ID == userid && xx.IS_ACTIVE == 1 
        select new 
        { 
         xx.TEMPLATE_ID, 
         xx.TEMPLATE_NAME, 
         EntityFunctions.TruncateTime(xx.CREATED_DATE) //new like 
        }).ToList(); 
+0

+1 XY समस्या को पहचानने के लिए +1। – Aron

+5

इकाई फ्रेमवर्क के नए संस्करणों में, 'EntityFunctions' को' डीबीफंक्शन 'द्वारा प्रतिस्थापित किया गया है। –

-1
शायद

इस:

जब मैं CREATED_DATE = xx.CREATED_DATE.Value.Date साथ कोशिश कर रहा हूँ, ऐसा लगता है कि एक त्रुटि दे रहा है?

var qry = (from xx in VDC.SURVEY_TEMPLATE 
      where xx.USER_ID == userid && xx.IS_ACTIVE == 1 
      select new { xx.TEMPLATE_ID, xx.TEMPLATE_NAME, xx.xx.CREATED_DATE }); 

var UserTemplates = qry.AsEnumerable().Select(xx => new 
        { 
         xx.TEMPLATE_ID, 
         xx.TEMPLATE_NAME, 
         xx.CREATED_DATE.Value.Date 
        }).ToList(); 
+0

इसमें कोई संपत्ति नहीं है जैसे 'डेट'। इसमें केवल '। Value.Date' जैसी संपत्ति है और यह काम नहीं कर रहा है और एक त्रुटि दे रहा है जैसे: निर्दिष्ट प्रकार सदस्य 'दिनांक' LINQ से इकाइयों में समर्थित नहीं है। केवल प्रारंभकर्ता, इकाई सदस्य, और इकाई नेविगेशन गुण समर्थित हैं। – RealSteel

+0

@RealSteel यह काम करना चाहिए यदि आप इसे पूरी तरह से पालन करते हैं। इसका कारण यह है कि 'डेट' कॉल लिंक से इकाइयों की बजाय लिंक से ऑब्जेक्ट में चल रहा है। फिर भी। यह मेरा पसंदीदा समाधान नहीं है। – Aron

+1

@Aron यह भी मेरा पसंदीदा समाधान नहीं है। यदि मूल्य प्रदर्शन उद्देश्यों के लिए प्राप्त किया जाता है तो मैं इसे क्वेरी के भीतर से एक तारीख बनाने की भी परवाह नहीं करता। नियंत्रण प्रदर्शन मान के लिए एक प्रारूपस्ट्रिंग होना चाहिए। – Dbuggy

0
var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE 
        where xx.USER_ID == userid && xx.IS_ACTIVE == 1 select xx).AsEnumerable() 
        .Select(i=> new 
        { 
         i.TEMPLATE_ID, 
         i.TEMPLATE_NAME, 
         CREATED_DATE = i.CREATED_DATE.ToString("M/d/yyyy"), 
         i.CREATED_DATE 
        }).ToList(); 
+0

एक क्वेरी बॉडी को एक चुनिंदा क्लॉज या समूह क्लॉज – RealSteel

+0

@RealSteel उत्तर अपडेट के साथ समाप्त होना चाहिए – Damith

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