Нужна помощь в создании запроса LINQ для группировки и фильтрации со связанными объектами.LINQ EF Группировка и исключение исключения
Вот мои классы моделей.
public class Application
{
[DisplayName("Application")]
public int ApplicationId { get; set; }
[DisplayName("Application")]
public string Name { get; set; }
public List<DashboardEntry> DashboardEntries { get; set; }
}
public class Cluster
{
[DisplayName("Cluster")]
public int ClusterId { get; set; }
[DisplayName("Cluster")]
public string Name { get; set; }
}
[Bind(Exclude = "AlbumId")]
public class DashboardEntry
{
[ScaffoldColumn(false)]
public int DashboardEntryId { get; set; }
public int ClusterId { get; set; }
public int ApplicationId { get; set; }
public HealthStatusIndicator Status { get; set; }
public string Incident { get; set; }
public string Remarks { get; set; }
public virtual Cluster Cluster { get; set; }
public virtual Application Application { get; set; }
}
Индексный метод действия заключается в следующем
public ActionResult Index()
{
//var dashboardEntries = db.DashboardEntries.Include(d => d.Application).Include(d => d.Cluster);
var dashboardEntries = db.DashboardEntries
.Include(d => d.Application)
.Include(d => d.Cluster)
.GroupBy(d => d.Application);
return View(dashboardEntries.ToList());
}
В представлении, модель декларации, как показано ниже.
@model IEnumerable<HealthCheckIndex.Models.DashboardEntry>
Я получаю сообщение об ошибке
Модель элемент передается в словарь типа «System.Data.Entity.Infrastructure.DbQuery1 [System.Linq.IGrouping2 [HealthCheckIndex.Models .Application, HealthCheckIndex.Models.DashboardEntry]] ', , но для этого словаря требуется элемент модели типа ' System.Collections.Generic.IEnumerable`1 [HealthCheckIndex.Models.DashboardEntry] '.
Если я изменю декларацию модели, как показано ниже, я получаю еще одну ошибку, которую Cluster
недоступен.
@model IEnumerable>
Я хочу, чтобы сгруппировать записи приборной панели в различные применения и фильтрации групп, выбрав максимальную запись приборной панели из каждой группы.
Это лучше не передавать EF Модели непосредственно на View. Создайте ViewModel, который содержит данные без свойств навигации, которые контроллер создает и передает на ваш вид. –
Спасибо за совет. В конечном итоге я перейду на этот подход, но сейчас моя цель - запустить приложение и запустить его. Я собираюсь выбрать SelectMany (c => c) на данный момент – kunaguvarun