LINQ EF分组和包含异常

时间:2016-03-27 07:43:18

标签: c# asp.net-mvc entity-framework linq

需要帮助创建LINQ查询以对相关实体进行分组和过滤。

这是我的模型类。

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>

我收到错误

  

传递到字典中的模型项是类型的   &#39; System.Data.Entity.Infrastructure.DbQuery1 [System.Linq.IGrouping2 [HealthCheckIndex.Models.Application,HealthCheckIndex.Models.DashboardEntry]]&#39 ;,   但是这个字典需要一个类型的模型项   &#39; System.Collections.Generic.IEnumerable`1 [HealthCheckIndex.Models.DashboardEntry]&#39;

如果我在视图中更改模型声明,如下所示,我收到另一个Cluster无法访问的错误。

  

@model IEnumerable&gt;

我想将仪表板条目分组到不同的应用程序中,并通过从每个组中选择最大仪表板条目来过滤组。

1 个答案:

答案 0 :(得分:2)

您当前传递给视图的类型与指定的类型

不匹配
closest('div')

目前,您传递的内容类似于字典,其中键为Application,值为IEnumerable $(document).on('click','.cancella_immagine', function () { $(this).closest('.wrapper').find('.thumb-image').hide(); });

为了使它具有以下两个选项之一:

  1. 替换控制器操作的最后一行

    @model IEnumerable<HealthCheckIndex.Models.DashboardEntry>

  2. 在视图中更改模型定义以匹配您返回的列表