[ad_1]
प्रिय महोदय,
LINQ डेटाटाइम प्रारूप को परिवर्तित करने में मेरी सहायता करें
उदाहरण:
1, मंगलवार, 26 जनवरी 2012 (या)
2, मंगलवार, 26 जनवरी 2012
मुझे समाधान दो?
मोहन द्वारा
समाधान 1
YearMonth = r.SomeDateTime.ToString("dddd, MMMM yyyy")
समाधान 3
linq “ToString()” विधियों को परिवर्तित करना नहीं जानता है, इसलिए जब आप डेटा प्राप्त कर रहे हों तो इसका उपयोग गणना योग्य रूप में करें
var selectQuery = db.address.asEnumerable() में जोड़ने से;
तो अब आप कन्वर्ट या “टॉस्ट्रिंग” विधियों का उपयोग कर सकते हैं।
समाधान 4
(time.table में classname से t.Date चुनें).ToList().Select(d => d.ToString(“yyyy-MM-dd”);
कोशिश करें यह काम करता है…….
समाधान 5
var selectQuery=from add in db.address select add.myDate.toString("{0:dddd, MMMM d, yyyy}"); selectQuery.Distinct();
ये कोशिश करें..
सम्मान,
nishant
समाधान 7
कभी-कभी सर्वर-साइड को फ़ॉर्मेट करना उपयोगी होता है। उप सेकंड रिज़ॉल्यूशन वाले टाइमस्टैम्प को घंटे या दिन भर के समूहों में समूहित करना एक उदाहरण है।
मेरे उपयोग के मामले में हमें प्रतिदिन 700K नए रिकॉर्ड मिलते हैं। तो सर्वर साइड बहुत तेज़ हो सकती है। इस मामले में 2.5 मिलियन रिकॉर्ड को 4 दिनों में समूहीकृत किया गया है।
AsEnumerable को लागू करना काम करता है, लेकिन इसमें ~40 मिनट (2500 सेकंड) लगेंगे। इसे 1000/सेकंड लौटाने से निकाला गया है।
सर्वर साइड को ग्रुप करने में लगभग .7 सेकंड का समय लगता है। इसे मापा जाता है.
मैं बहुत धीमी गति से रिमोट चला रहा हूं, लेकिन मुद्दा बिल्कुल यही है। होस्ट किए गए डेटाबेस हमेशा वायर पर परिणाम लौटाते हैं, इसलिए डीबी सर्वर पर एकत्रीकरण डीबी इंजन को वह करने की अनुमति देता है जिसके लिए इसे स्थानीय स्तर पर बनाया गया है।
यदि संभव हो तो कुछ ऑपरेशन जैसे टॉपर() या हर रिकॉर्ड को फ़ॉर्मेट करना स्थानीय रूप से किया जाना चाहिए। दिनांक को प्रारूपित करने के लिए LinqToSQL/EF बहुत कठिन नहीं है, लेकिन परिणामी SQL बहुत गड़बड़ है।
परिसीमनक जोड़ना मनुष्यों के लिए है, और समूहीकरण के लिए इसकी आवश्यकता नहीं है। यहां तक कि ज्यादातर मामलों में PadLeft() विधियों की आवश्यकता नहीं होती है, लेकिन वे परिणामी डेटाटाइम को शाब्दिक रूप से क्रमबद्ध करना और पढ़ना आसान बनाते हैं।
इस उदाहरण में मैंने दिनों को समूहीकृत करने के लिए घंटा, न्यूनतम और सेकंड को 00 पर सेट किया है।
घंटे के अनुसार समूह बनाने के लिए, टिप्पणी हटाएँ:
let Hour = Date.Hour.ToString().PadLeft(2, '0') //let Hour = "00"
यह तो बस एक त्वरित और गंदा उदाहरण है. अब तक का सबसे तेज़ कोड नहीं।
बस इसे सर्वर साइड से करने पर यह 40 सेकंड से प्राप्त हो जाता है। एक सेकंड से भी कम समय के लिए. तो फिलहाल मेरा काम हो गया.
वैसे यह स्क्रिप्ट केवल मेरे पर्यावरण में लिंकपैड पर चलती है, इसलिए अपनी आवश्यकताओं के अनुरूप संपादित करें, लेकिन मुझसे अपनी विशिष्ट समस्या का समाधान करने के लिए न कहें।
void Main() { var query = from cat in CATOperations let Date = cat.OperationDateTime let Year = Date.Year.ToString().PadLeft(4, '0') let Month = Date.Month.ToString().PadLeft(2, '0') let Day = Date.Day.ToString().PadLeft(2, '0') //let Hour = Date.Hour.ToString().PadLeft(2, '0') let Hour = "00" //let Minute = Date.Minute.ToString().PadLeft(2, '0') let Minute = "00" //let Second = Date.Second.ToString().PadLeft(2, '0') let Second = "00" let dateGroup = Year + '/' + Month + '/' + Day + " " + Hour + ":" + Minute + ":" + Second where Date > new DateTime(2024, 1, 9) //select new{Date, dateGroup}; group 1 by dateGroup into g orderby g.Key let count = g.Count() select new { g.Key, count }; query.Dump(); }
[ad_2]
コメント