1

重複の可能性:
LINQ クエリから匿名型を返しますか?

私はこの方法を使用します:

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

4 に答える 4

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;
    }
于 2012-07-13T13:16:49.250 に答える
1

LINQ クエリは匿名型を生成するため、メソッドの戻り値の型として使用できず、呼び出し元のメソッドは戻り値の型について何も知りません。

これを回避する方法は、動的キーワードと動的型を利用することです。

メソッドの戻り値の型は次のようになります

public dynamic GetList() {
        return ...;
于 2012-07-13T13:18:27.737 に答える
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; 
    } 
于 2012-07-13T13:21:01.830 に答える
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.
}
于 2012-07-13T13:34:56.237 に答える