2012-01-23 10 views
5

के साथ डेटटाइम का सबस्ट्रिंग मैं अपनी तालिका से तिथियों की एक सूची प्राप्त करने का प्रयास कर रहा हूं, जिसमें स्टार्टटाइम नामक कॉलम में कई डेटटाइम मान शामिल हैं।लिंक से एसक्यूएल एक्सटेंशन

SELECT DISTINCT SUBSTRING(CONVERT(VARCHAR(50), StartTime, 120), 1, 10) 

इस तालिका में प्रत्येक पंक्ति के लिए "yyyy-MM-dd" प्रारूप में तिथियों का एक अलग सूची में प्रकट: मेरे पूर्ववर्ती निम्नलिखित एसक्यूएल उपयोग कर रहा था। मैं ऐसा करके Linq करने वाली एसक्यूएल में बदलने के लिए कोशिश कर रहा हूँ निम्नलिखित:

query.Select(o => o.StartTime.ToString("yyyy-MM-dd")).Distinct() 

हालांकि यह एक त्रुटि में परिणाम है "विधि 'System.String ToString (System.String)' एसक्यूएल के लिए कोई समर्थित अनुवाद है । "

मैं लिंक-टू-एसक्यूएल का उपयोग करके इस सबस्ट्रिंग/कन्वर्ट कैसे कर सकता हूं?

धन्यवाद!

उत्तर

3

मुझे क्या करना होगा:

query.Select(o => o.StartTime.Date) 
    .Distinct() // Runs on the database 
    .AsEnumerable() // Convert to local sequence 
    .Select(date => date.ToString("yyyy-MM-dd")) // Runs on the client 

DateTime.Date संपत्ति (उप-तिथि भाग बाहर स्ट्रिप्स) एसक्यूएल करने के लिए LINQ में समर्थित है, तो दिनांक-स्वरूपण के अलावा अन्य सब कुछ डेटाबेस पर चलेंगे। यदि आप एक स्ट्रिंग के रूप में देखना चाहते हैं

var results = query.Select(o => o.StartTime.Date).Distinct(); 

, बाद में, आप वस्तुओं को LINQ का उपयोग कर सकते परिणाम कन्वर्ट करने के लिए: स्ट्रिंग प्रसंस्करण पर भरोसा करने की

+0

यह पूर्ण दिनांक-समय मान पर अलग होगा, तारीख के दिन नहीं। –

+0

@ जोन: नहीं, यह अकेले दिनांक भाग पर अलग होगा। डेटटाइम पर मैपिंग नोट करें। चयन खंड पर दिनांक। – Ani

+0

हां, मैं बस इसे वहां गलत तरीके से पढ़ता हूं। –

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