2012-05-08 10 views
1

ビューに値を返すためにGROUPBYの使用:LINQ/EF - 私は次のクエリを使用しています、私のMVC 3アプリケーションで

var items = context.QuoteLines.Include("DaybookVehicles").Where(x => x.EnquiryID == id).GroupBy(x=>x.VehicleID).ToList(); 
return View(items); 

次に私の見解で、私はこれが一番上に持っている:

@model IEnumerable<myApp.Areas.DayBook.Models.DayBookQuoteLines> 

しかし、これはエラーをスローします:

The model item passed into the dictionary is of type 
'System.Collections.Generic.List`1[System.Linq.IGrouping`2[System.Int32,myApp.Areas.DayBook 
.Models.DayBookQuoteLines]]', but this dictionary requires a model item of type 
'System.Collections.Generic.IEnumerable`1[myapp.Areas.DayBook.Models.DayBookQuoteLines]'. 

は、どのように私は、この場合に、グループを使用していますか?

public class DayBookQuoteLines 
{ 
    [Key] 
    public int QuoteLineID { get; set; } 

    public int EnquiryID { get; set; } 

    public virtual int VehicleID { get; set; } 

    public virtual DaybookVehicles Vehicle { get; set; } 

    [Required(ErrorMessage = "This field is required.")] 
    [Display(Name = "Item Number:")] 
    [MaxLength(50)] 
    public string ItemNumber { get; set; } 

    public string ItemDescription { get; set; } 
} 

車モデル::私は彼らの一致VehicleID

編集

QuoteLinesモデルへのグループの私QuoteLinesのそれぞれをしたいのよう

public class DaybookVehicles 
{ 
    [Key] 
    public int VehicleID { get; set; } 

    public int EnquiryID { get; set; } 

    public virtual ICollection<DayBookQuoteLines> QuoteLines { get; set; } 

    public string vrm { get; set; } 

    public string make { get; set; } 

    public string model { get; set; } 

    public string engine_size { get; set; } 

    public string fuel { get; set; } 
} 

私は、このセットアップを持っていると思います正確だが、各車両にはQuoteLinesのコレクションを添付することができる!

+3

でToListメソッドの必要がないと思います.I関数によって返される型と異なっています最初にドキュメントを読んでから、エラーコードを読んで何をしているのかを説明します。なぜなら、クエリと@モデルは何か別のものを言うからです。 – Euphoric

+0

あなたのお手伝いをするためにあなたのモデルが必要です! –

+0

クエリは(複数の)* groups *を返します。各グループには1つの 'VehicleID'と多くの' QuoteLines'があります。ビューは単純に 'QuoteLines'を表示しようとしています。これらは異なるタイプのデータです。ビューに* groups *または* lines *を表示させ、クエリを適切に修正するかどうかを決定します。 – AakashM

答えて

4

モデルタイプは、このビューの適切なモデルが

@model IEnumerable<IGrouping<int, DayBookQuoteLines>> 

で、あなたが使用してクエリ

+0

ちょうどこれに関する質問、なぜ最初の値はintですか? VehicleIDがint値であるためですか? – CallumVass

+1

@BiffBaffBoffはい、グループ化キーです –

+0

ありがとう、ありがとう! :) – CallumVass