2012-07-13 69 views
1

可能重複:
Return anonymous type from LINQ query?什麼輸出類型這個方法?

我用這個方法:

public static ... GetList() 
    { 
     Entity conn = new Entity(); 
     var lst = (from PS in conn.PurchaserSpecials 
       select new 
       { 
        PS.PurchaserID, 
        PS.PurchaserSerial, 
        PS.Purchaser.Address, 
        PS.Purchaser.Fax, 
        PS.Purchaser.NumberEconomic 
       }).ToList(); 
return lst; 
    } 

不能使用無功輸出類型。請幫我...

什麼是輸出方法?

+2

嗯,這是兩件事情:)它是一個對象類型,因爲這是方法返回的,但linq查詢返回一個匿名類型列表(select new {..}創建一個匿名類型) – 2012-07-13 13:16:24

+0

'lst'變量是匿名類型的,這意味着你只能在你的方法中使用它。你必須使用一個衆所周知的類來解決你的問題。 – 2012-07-13 13:16:30

+0

調試器擁有您尋求的答案 – 2012-07-13 13:51:30

回答

2

這是您創建的匿名類型的列表。

如果你想返回一個類型,你會知道,創建具有您所選擇的領域一個新的類(我猜以下類型):

public class Specials 
    { 
     public int PurchaserID { get; set; } 
     public int PurchaserSerial { get; set; } 
     public string Address { get; set; } 
     public int Fax { get; set; } 
     public int NumberEconomic { get; set; } 
    } 

public static List<Specials> GetList() 
    { 
     Entity conn = new Entity(); 
     var lst = (from PS in conn.PurchaserSpecials 
       select new Specials 
       { 
        PurchaserID = PS.PurchaserID, 
        PurchaserSerial = PS.PurchaserSerial, 
        Address = PS.Purchaser.Address, 
        Fax = PS.Purchaser.Fax, 
        NumberEconomic = PS.Purchaser.NumberEconomic 
       }).ToList(); 
return lst; 
    } 
1

您LINQ查詢生成一個匿名類型,因此不能用作方法的返回類型,調用方法不會知道返回類型的任何內容。

解決此問題的一種方法是使用動態關鍵字和動態類型。

你方法的返回類型可以是這樣的

public dynamic GetList() { 
     return ...; 
0

查詢的輸出是一個匿名類型,你不能返回回作爲參數。簡單地說,好,你創建一個類是這樣的:「PurchaseDetail」與所有這些屬性和返回喜歡代碼:

public static List<PurchaseDetail> GetList() 
    { 
     Entity conn = new Entity(); 
     var lst = (from PS in conn.PurchaserSpecials 
       select new PurchaseDetail 
       { 
        PurchaserID= PS.PurchaserID, 
        PurchaserSerial=PS.PurchaserSerial, 
        Address=PS.Purchaser.Address, 
        Fax=PS.Purchaser.Fax, 
        NumberEconomic =PS.Purchaser.NumberEconomic 
       }).ToList(); 
return lst; 
    } 
0

返回類型將是List of type Products

​​