2011-04-20 72 views
0

我有如下定義一個軟件標題類:問題與LINQ查詢輸出轉換爲List <>在asp.net

public class SoftwareTitles 
{ 

string softwareTitle; 
string invoiceNumber; 

public SoftwareTitles(string softwareTitle, string invoiceNumber) 
{ 
    this.softwareTitle = softwareTitle; 
    this.invoiceNumber = invoiceNumber; 
} 

public string InvoiceNumber 
{ 
    get 
    { 
     return this.invoiceNumber; 
    } 
} 

public string SoftwareTitle 
{ 
    get 
    { 
     return this.softwareTitle; 
    } 
} 

}

和我得到的軟件產品從我的LINQ查詢和發票號碼,我想用下面的代碼在清單上存儲:

List<SoftwareTitles> softwareTitlesList = new List<SoftwareTitles>(); 
var result = (from CustomersRecord custRecords in custRecordContainer select new { InvoiceNumber = custRecords.InvoiceNumber, SoftwareTitle = custRecords.InvoiceNumber }).ToList(); 
     softwareTitlesList = result; 

但它嚇壞了,給我這個錯誤:

Error 1 Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>' to 'System.Collections.Generic.List<SoftwareTitles>' 

任何人都可以幫助我嗎?

感謝預期

+0

這與答案無關,但請注意您正在使用2個custRecords.InvoiceNumber創建對象。它看起來像你想要的:{custRecords.SoftwareTitle,custRecords.InvoiceNumber} – Blazes 2011-04-20 11:53:38

回答

2

我認爲這個問題是要創建一個匿名類型:

select new { InvoiceNumber = custRecords.InvoiceNumber, SoftwareTitle = custRecords.InvoiceNumber } 

和你正在試圖建立SoftwareTitles的列表。我不是語法100%,但嘗試使用:

select new SoftwareTitle(custRecords.SoftwareTitle, custRecords.InvoiceNumber) 
1

select代碼

select new { 
     InvoiceNumber = custRecords.InvoiceNumber, 
     SoftwareTitle = custRecords.InvoiceNumber 
} 

是返回一個annonymous型。您不能將您的匿名類型放入List<SoftwareTitles>

兩個解決方案:

1)如果你讓使用var關鍵字

var myList = from CustomersRecord custRecords 
       in custRecordContainer 
       select new { 
        InvoiceNumber = custRecords.InvoiceNumber, 
        SoftwareTitle = custRecords.InvoiceNumber 
      }).ToList(); 

2編譯器確定您的列表的類型,你可以選擇一個annonymous型)映射到一個SoftwareTitle對象的Select

List<SoftwareTitle> myList = from CustomersRecord custRecords 
           in custRecordContainer 
           select new SoftwareTitle { 
            InvoiceNumber = custRecords.InvoiceNumber, 
            SoftwareTitle = custRecords.InvoiceNumber 
           }).ToList(); 

我猜你可能想做第二種方法。使用一個annonymous類型的列表只是作爲一個函數的中間步驟而非常有用,因爲你通常不能將它作爲函數參數傳遞到別的地方。

相關問題