什么输出类型这种方法?

时间:2012-07-13 13:14:12

标签: c# entity-framework-4

  

可能重复:
  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;
    }

不能将var用于输出类型。请帮帮我......

输出方法是什么?

4 个答案:

答案 0 :(得分: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 :(得分:1)

您的LINQ查询生成一个匿名类型,因此不能用作该方法的返回类型,并且调用方法不会知道有关返回类型的任何内容。

解决这个问题的方法是使用动态关键字和动态类型。

你方法的返回类型可以是这样的

public dynamic GetList() {
        return ...;

答案 2 :(得分: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; 
    } 

答案 3 :(得分:0)

退货类型为List of type Products

public static List<Products> 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;
}

public class Products
{
    //Properties you are using in the query.
}