2013-02-12 16 views
5

Próbuję wypełnić dane transakcji, gdy AccountNumber nie istnieje. Aby to uzyskać, muszę uzyskać dostęp do tabeli konta. Otrzymuję następujący błąd, gdzie staram się powrócić IEnumerableNie można niejawnie przekonwertować typu "System.Collections.Generic.IEnumerable <AnonymousType # 1>" na "System.Collections.Generic.List <modelClass>

nie można niejawnie przekonwertować typu System.Collections.Generic.IEnumerable<AnonymousType#1> do System.Collections.Generic.List<ProjectModel.Transaction>

błędzie jest wyświetlany na górze .ToList(); część kodu. Co ja robię źle?

kod jest:

public static IEnumerable<Transaction>GetAllTransactions() 
    { 
     List<Transaction> allTransactions = new List<Transaction>(); 
     using (var context = new CostReportEntities()) 
     { 
      allTransactions = (from t in context.Transactions 
           join acc in context.Accounts on t.AccountID equals acc.AccountID 
           where t.AccountID == acc.AccountID 
           select new 
           { 
            acc.AccountNumber, 
            t.LocalAmount 
           }).ToList(); 

     } 
     return allTransactions; 

    } 

Odpowiedz

5

Lista typów anonimowych nie może być przesyłana do listy transakcji. Wygląda na to, że twoja klasa Transaction nie ma właściwości AccountNumber. Ponadto nie można zwracać anonimowych obiektów z metod. Należy więc stworzyć pewnego rodzaju, które będą trzymać wymagane dane:

public class AccountTransaction 
{ 
    public int LocalAmount { get; set; } 
    public int AccountNumber { get; set; } 
} 

i powrotu tych obiektów:

public static IEnumerable<AccountTransaction> GetAllTransactions() 
{  
    using (var context = new CostReportEntities()) 
    { 
     return (from t in context.Transactions 
       join acc in context.Accounts 
        on t.AccountID equals acc.AccountID    
       select new AccountTransaction { 
        AccountNumber = acc.AccountNumber, 
        LocalAmount = t.LocalAmount 
       }).ToList(); 
    } 
} 

BTW nie trzeba dołączyć duplikat stan w miarę filtr

+1

To działało idealnie. Doskonała odpowiedź. Wielkie dzięki za skierowanie mnie we właściwy kierunek. W ten sposób nauczyłem się kilku innych rzeczy. Teraz wiem, o co chodzi w ViewModel. – shaz

2

anonimowy typ, który masz wystający w „nowej” części wybrać swojego kwerendy LINQ nie można rzutować bezpośrednio do „transakcja” typu.

Zamiast tego należy wyświetlić nową instancję transakcji. Pomocne mogą być następujące informacje:

+0

To byłoby nie działa, ponieważ nie mam właściwości AccountNumber w tabeli transakcji. – shaz

+0

Może następnym razem wymienisz właściwości swojej klasy poco? :) – RainbowFish

+0

To zdecydowanie dobry pomysł, na pewno będę o tym pamiętać następnym razem. Dzięki za pomoc. – shaz

Powiązane problemy