2012-04-05 5 views
5
  1. मुझे एक आरडीएलसी रिपोर्ट मिली
  2. एसक्यूएल डीबी में संग्रहीत दिनांक प्रारूप जॉर्जियाई है। मैं फ़ारसी के रूप में रिपोर्ट में दिनांक प्रदर्शित करना चाहता हूं।
  3. लिंक का उपयोग करके मैं डीबी के सभी क्षेत्रों को चुनना चाहता हूं इसके अलावा कुछ नया फ़ील्ड फ़ारसी दिनांक फ़ील्ड के रूप में उपयोग किया जाना चाहिए।

मैं वाक्य रचना नीचे प्रयोग किया है:LINQ में सभी फ़ील्ड्स और कुछ नए फ़ील्ड का चयन कैसे करें?

var invoices = from invoice in dbContext.eve_Invoices 
        select new 
        { 

         invoice.*, 
         PersianYear = invoice.DateCreation != null ? pc.GetYear((DateTime)invoice.DateCreation) : 0, 
         PersianMonth = invoice.DateCreation != null ? pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0, 
         PersianDay = invoice.DateCreation != null ? pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0 
        }; 

मैं भी चयन नए {चालान करने की कोशिश की:

var invoices = from invoice in dbContext.eve_Invoices 
        select new 
        { 

         invoice.CreatorID, 
         invoice.DateChange, 
         invoice.DateCreation, 
         invoice.DatePrint, 
         invoice.Discount, 
         invoice.DiscountPercentage, 
         invoice.DiscountType, 
         invoice.Fare, 
         invoice.ID, 
         invoice.InvoiceStatus, 
         invoice.NumberOfItems, 
         invoice.Packaging, 
         invoice.PrintID, 
         invoice.RawPrice, 
         invoice.RoundOff, 
         invoice.ServiceCharge, 
         invoice.ServingType, 
         invoice.TableID, 
         invoice.Tax, 
         invoice.TotalPrice, 
         invoice.ValidityStatus, 
         PersianYear = invoice.DateCreation != null ? pc.GetYear((DateTime)invoice.DateCreation) : 0, 
         PersianMonth = invoice.DateCreation != null ? pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0, 
         PersianDay = invoice.DateCreation != null ? pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0 
        }; 

इस तरह के रूप में नए क्षेत्रों के अलावा चालान के सभी क्षेत्रों पारित करने के लिए किसी भी तरह से है , ....} हालांकि यह पहले के रूप में समान डेटा के परिणामस्वरूप नहीं होगा।

+0

आपका पहला वाक्यविन्यास काम नहीं करेगा, आपको अपने अनाम प्रकार के लिए पैरामीटर नाम दिया जाना चाहिए, मुझे लगता है कि डेटटाइम कास्टिंग यहां काम नहीं करेगा। –

उत्तर

5

आप सभी feilds पारित कर सकते हैं, लेकिन यह खूबसूरत नहीं है, यह अपने आप में चालान पारित करने के लिए, अपने खेतों के बजाय बेहतर है:

var invoices = from invoice in dbContext.eve_Invoices 
       select new 
       { 
        RelatedInvoice = invoice, 
        PersianYear = invoice.DateCreation != null ? pc.GetYear((DateTime)invoice.DateCreation) : 0, 
        PersianMonth = invoice.DateCreation != null ? pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0, 
        PersianDay = invoice.DateCreation != null ? pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0 
       }; 

पुनश्च: मुझे यकीन है कि इस लाइनों linq2entities में ध्यान से काम नहीं कर रहा हूँ (यह है किसी-किसी दिन मैं किसी भी आईडीई नहीं है और मैं सब कुछ भूल गया :): इस मैं पहली बार डेटा लाने का सुझाव देते हैं और फिर रूपांतरण काम नहीं करता है

PersianDay = invoice.DateCreation != null ? pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0 

+0

आपकी मदद के लिए धन्यवाद। मुख्य समस्या यह है कि मैं इस प्रश्न का परिणाम आरडीएलसी रिपोर्ट में डेटा इंजेक्ट करने के लिए करना चाहता हूं और मुझे नहीं पता कि चालान डेटा प्रकार को मूल डेटा प्रकारों में कैसे परिवर्तित किया जाए, जिसे आरडीएलसी रिपोर्ट में मूल डेटा प्रकार के रूप में उपयोग किया जा सकता है। जहां तक ​​मुझे पता है, आरडीएलसी इनवॉइस जैसे डेटा प्रकारों का समर्थन नहीं करता है :( – VSB

+0

आपके पहले नमूने के समान कुछ उपयोग करने के अलावा linq2entities में कोई रास्ता नहीं है, लेकिन प्रतिबिंब द्वारा linq2object में एक गंदा तरीका है, लेकिन मुझे पसंद है सामान्य तरीका, सबसे पहले मैं डीबी से डेटा लाऊंगा, फिर मैं उन्हें यूआई प्रारूप में बदल दूंगा। –

0

आप चालान का उपयोग स्वयं कर सकते हैं।

var invoices = from invoice in dbContext.eve_Invoices 
       select new 
       { 
       invoice, 
       PersianYear = invoice.DateCreation != null ? >pc.GetYear((DateTime)invoice.DateCreation) : 0, 
       PersianMonth = invoice.DateCreation != null ? >pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0, 
       PersianDay = invoice.DateCreation != null ? >pc.GetDayOfMonth((DateTime)invoice.DateCreation) : 0 
       }; 

आप बाद में उपयोग पर इस

foreach (var invc in invoices) 
    { 
    //invc.invoice.CreatorID 
    } 

दिनांक समय कास्टिंग जैसे क्षेत्रों भी काम करता है सकते हैं। यदि चालान हो तो आपको सावधानी बरतनी चाहिए। इसे बनाने से पहले डेटक्रिएशन शून्य प्रकार है।

+0

आपकी मदद के लिए धन्यवाद। मुख्य समस्या यह है कि मैं इस क्वेरी का परिणाम आरडीएलसी रिपोर्ट में डेटा इंजेक्ट करने के लिए करना चाहता हूं और मैं नहीं करता इनवॉइस डेटा प्रकार को मूल डेटा प्रकारों में परिवर्तित करने का तरीका नहीं है जिसे आरडीएलसी रिपोर्ट में मूल डेटा प्रकार के रूप में उपयोग किया जा सकता है। जहां तक ​​मुझे पता है, आरडीएलसी इनवॉइस जैसे डेटा प्रकारों का समर्थन नहीं करता है :( – VSB

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