c# - How to get max value of a string column of numbers in Entity Framework -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 1 उत्तर

मुझे यहाँ एक समस्या है मैं एक एसक्यूएल फ़ील्ड के अधिकतम मूल्य को प्राप्त करने की कोशिश कर रहा था, जैसा कि

  LastInvoiceNo = Convert.ToInt64 (dbContext.InvoiceMaster.Max (e = & gt; ई। इनवॉइस नॉन));  

लेकिन यह मुझे गलत मान देता है क्योंकि स्तंभ प्रकार "इनवॉइस नो" varchar है इसलिए मैंने उसे इसे Int64 में बदलने की कोशिश की

  LastInvoiceNo = dbContext.InvoiceMaster.Max (e = & gt; Convert.ToInt64 (e.InvoiceNo));  

और

  अंतिम अन्वेषणनहीं = dbContext.InvoiceMaster.Select (e = & gt; Int64.Parse (e.InvoiceNo))। अधिकतम ();  

लेकिन यह एक अपवाद फेंकता है कि

इकाई के लिए LINQ विधि 'आईटी 64 पार्स (सिस्टम। स्ट्रिंग)' विधि को पहचान नहीं सकता, और यह विधि एक स्टोर अभिव्यक्ति में अनुवाद किया जा सकता है।

आपको जो त्रुटि मिलती है वह है क्योंकि ईएफ अपनी लिनक्स क्वेरी को वास्तविक एसक्यूएल स्टेटमेंट में ट्रांसफर कर सकते हैं, लेकिन ऐसा नहीं हो सकता है।

आप क्या कर सकते हैं क्वेरी को निष्पादित करने के लिए मजबूती से स्थानीय रूप से डेटा लाया है, और उसके बाद आप इंट 64 में परिवर्तित कर सकते हैं और चेक कर सकते हैं। मैक्स।

कुछ इस तरह से:

  अंतिम अंतर्वस्तु नहीं = dbContext.InvoiceMaster.ToList ()। अधिकतम (ई = & gt; Convert.ToInt64 (e.InvoiceNo));  

सुनिश्चित करें कि यदि आपके पास उस तालिका में लाखों पंक्तियां हों तो क्या करना सबसे अच्छी बात है।

चीयर्स


Comments