2013-02-12 11 views
5

मैं लेनदेन डेटा को पॉप्युलेट करने की कोशिश कर रहा हूं जहां खाता संख्या मौजूद नहीं है। मुझे यह प्राप्त करने के लिए खाता तालिका तक पहुंचने की आवश्यकता है। मैं निम्न त्रुटि जहाँ मैंअंतर्निहित रूप से प्रकार 'System.Collections.Generic.IEnumerable <AnonymousType # 1>' to 'System.Collections.Generic.List <modelClass>

परोक्ष System.Collections.Generic.List<ProjectModel.Transaction>

त्रुटि के प्रकार System.Collections.Generic.IEnumerable<AnonymousType#1> कनवर्ट नहीं कर सकता IEnumerable वापस जाने के लिए कोशिश कर रहा हूँ हो रही है .ToList() के शीर्ष पर दिखाया गया है, कोड के भाग। मैं क्या गलत कर रहा हूं?

कोड है:

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; 

    } 

उत्तर

5

अज्ञात प्रकारों की सूची लेनदेन की सूची में नहीं डाली जा सकती है। ऐसा लगता है कि आपकी Transaction कक्षा में AccountNumber संपत्ति नहीं है। इसके अलावा आप विधियों से अज्ञात वस्तुओं को वापस नहीं कर सकते हैं। तो अगर आप कुछ प्रकार जो आवश्यक डेटा रखा जाएगा बनाना चाहिए:

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

और इन वस्तुओं वापसी:

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 आप डुप्लिकेट जहां फिल्टर

+1

यह पूरी तरह से काम किया। उत्कृष्ट जवाब मुझे सही दिशा में डालने के लिए बहुत बहुत धन्यवाद। इसे करने से मैंने कुछ अन्य चीजें भी सीखी हैं। अब मुझे पता है कि व्यूमोडेल क्या है। – shaz

2

गुमनाम प्रकार जो आप अपने LINQ क्वेरी की 'नई चयन "खंड में पेश कर रहे हैं" लेन-देन "प्रकार के लिए सीधे casted नहीं किया जा सकता।

इसके बजाय, आपको लेनदेन का एक नया उदाहरण प्रोजेक्ट करना चाहिए। निम्नलिखित मदद कर सकते हैं:

allTransactions = (from t in context.Transactions 
    join acc in context.Accounts on t.AccountID equals acc.AccountID 
    where t.AccountID == acc.AccountID 
    select new Transaction() 
    { 
     AccountNumber = acc.AccountNumber, 
     LocalAmount = t.LocalAmount 
    }).ToList(); 
+0

में हालत में शामिल होने की जरूरत नहीं है यह होगा काम नहीं करते क्योंकि मेरे पास लेनदेन तालिका में खाता संख्या संपत्ति नहीं है। – shaz

+0

शायद अगली बार आपके पोको कक्षा के गुणों को सूचीबद्ध भी कर सकता है? :) – RainbowFish

+0

यह निश्चित रूप से एक अच्छा विचार है, मैं निश्चित रूप से अगली बार याद रखूंगा। फ़िर भी सहायता के लिए धन्यवाद। – shaz

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