2012-05-08 3 views
1

В моем приложении MVC 3 Я использую следующий запрос:LINQ/EF - Использование GroupBy для возврата значений в View

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]'. 

Как я использую группу, в данном случае? Как я хотел бы, чтобы сгруппировать каждый из моих QuoteLines на их соответствие VehicleID

Редактировать

QuoteLines Модель:

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; } 
} 

Транспорт Модель:

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

Вы используете сначала прочитав документацию, затем прочитав код ошибки, а затем объяснив, что вам нужно, потому что запрос и @model говорят что-то совершенно другое. – Euphoric

+0

Нам нужны ваши модели, чтобы помочь вам! –

+0

Запрос возвращает (много) * групп *, каждый из которых имеет один 'VehicleID' и многие' QuoteLines'. Ваше представление пытается отобразить просто «QuoteLines». Это разные типы данных. Решите, хотите ли вы, чтобы ваше представление отображало * группы * или * строки * и соответствующим образом изменяло ваш запрос. – AakashM

ответ

4

типа модель отличается от типа возвращаемого функцией .Я думаю, что соответствующая модель для этой точки зрения является

@model IEnumerable<IGrouping<int, DayBookQuoteLines>> 

и нет никакой необходимости в ToList в запросе

+0

Вопрос только в том, почему первое значение является int? Это связано с тем, что VehicleID является значением int? – CallumVass

+1

@BiffBaffBoff Да, это ключ группировки –

+0

Хорошо, спасибо за ваши ответы! :) – CallumVass

Смежные вопросы