2012-04-05 14 views
5
  1. Mam raport RDLC
  2. Format daty przechowywany w SQL DB jest gruziński. Chcę wyświetlić datę w raporcie jako perski.
  3. Korzystanie z Linqu chcę zaznaczyć wszystkie pola DB, a dodatkowo niektóre nowe pola, które będą używane jako Perskie Pola Daty.

Użyłem poniżej składnią:Jak wybrać wszystkie pola plus kilka nowych pól w LINQ?

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 
        }; 

jest jakiś sposób, aby przejść wszystkie pola fakturze oprócz nowych dziedzinach, takich jak:

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 
        }; 

Próbowałem też wybrać nowe {fakturę , ....} nie spowoduje jednak, że datatable będzie taki sam jak pierwszy.

+0

Twoja pierwsza składnia nie będzie działać, powinieneś mieć nazwany parametr dla swojego anonimowego typu, również myślę, że odlewanie DateTime nie będzie działać tutaj. –

Odpowiedz

5

można przekazać wszystkie feilds, ale to nie jest piękne, to lepiej, aby przejść Rachunek od siebie, zamiast swoich dziedzinach:

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 
       }; 

PS: Nie jestem pewien, że to linie działają dokładnie w linq2entities (to jest kilka dni nie mam żadnych IDE i zapomniałem wszystkiego :):

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

Jeśli to nie zadziała Proponuję najpierw pobrać dane, a następnie zrobić konwersję.

+0

dzięki za pomoc. Głównym problemem jest to, że chcę, aby to zapytanie wprowadziło dane do raportu RDLC i nie wiem, jak przekonwertować typ danych faktury na podstawowe typy danych, które mogą być używane jako podstawowe typy danych w raporcie RDLC. O ile mi wiadomo, RDLC nie obsługuje typów danych, takich jak faktura :( – VSB

+0

Nie ma możliwości w Linq2, z wyjątkiem użycia czegoś podobnego do twojej pierwszej próbki, ale w Linq2object jest brudny sposób przez odbicie, ale chciałbym normalny sposób, najpierw pobieram dane z DB, potem będę je konwertował np. w formacie UI –

0

Możesz użyć samej faktury.

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 
       }; 

może później o dostępie pola takie jak ta

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

Datą Czas rzucania działa również. Powinieneś uważać, jeśli invoice.DateCreation jest typu Nullable przed rzutowaniem.

+0

dziękuję za twoją pomoc.Głównym problemem jest to, że chcę wynik tej kwerendy wprowadzić dane do raportu RDLC i ja don wiedzieć, jak przekonwertować typ danych faktury na podstawowe typy danych, które mogą być używane jako podstawowe typy danych w raporcie RDLC. O ile mi wiadomo, RDLC nie obsługuje typów danych, takich jak faktura :( – VSB

Powiązane problemy