2009-07-08 16 views
2

私はC#でASP.net MVCを使用しています。以下のエラーを示すASP.NET MVCで匿名型を渡す

public IQueryable<Product> ListProducts(string prodcutType) 
{ 
    var results = from p in db.Products 
     join s in db.Stocks 
     on p.ID equals s.IDProduct 
     where p.ptype == prodcutType 
     select new { s.width, s.height, s.number};     
    return results; 
} 

:なぜこれがコードですか?

エラー1は、暗黙的に System.Linq.IQueryable<eim.Models.Product>にタイプ System.Linq.IQueryable<AnonymousType#1> を変換できません。 明示的な変換が存在するが(あなたはキャストを逃し ある?)

答えて

8

select new { s.width, s.height, s.number}System.Linq.IQueryable<AnonymousType#1>を意味しますが、あなたの関数がIQueryable<Product>を返すように想定しているため。 UPDATED

public IQueryable<Product> ListProducts(string prodcutType) 
{ 

    var results = from p in db.Products 
        join s in db.Stocks 
        on p.ID equals s.IDProduct 
        where p.ptype == prodcutType 
        select p; 
    return results; 
} 

をそれともIQueryable<Stock>をしたい:にあなたのコードを変更し

public IQueryable<Stock> ListProducts(string prodcutType) 
{ 

    var results = from p in db.Products 
        join s in db.Stocks 
        on p.ID equals s.IDProduct 
        where p.ptype == prodcutType 
        select s; 
    return results; 
} 

あなただけの3つのプロパティをしたい場合は、+高さ+数が新しいタイプを作成幅。たとえば、次のように

public class SomeType { 
    public int Width { get; set; } 
    public int Height { get; set; } 
    public int Number { get; set; } 
} 

public IQueryable<SomeType> ListProducts(string prodcutType) 
{ 

    var results = from p in db.Products 
        join s in db.Stocks 
        on p.ID equals s.IDProduct 
        where p.ptype == prodcutType 
        select new SomeType { 
         Width = s.width, 
         Height = s.height, 
         Number = s.number 
        }; 
    return results; 
} 
1

select new { s.width, s.height, s.number};  

があなたのテーブル「db.Stocks」からのみ、これらの三つのフィールドを選択し、これは新しい、匿名型を作成し、あなたのLINQクエリの最後の行「結果」に格納されて戻されるもの

「返品結果」に戻ってきたものは何ですか?したがって、 a IQueryable<Product>ではありません。これはまったく異なるものです(匿名型のIQueryable)。

商品を返品する場合は、その匿名タイプを「商品」にキャストするか、選択したフィールドから新しい商品クラスを作成する必要があります。

マーク

関連する問題