在EF中对子类进行分组

时间:2014-11-07 03:18:33

标签: c# entity-framework entity-framework-6

在我的EF模型中,我有一个基类 Report 和一组子类。假设我想让EF获取所有报告并按子类类型对它们进行分组。

考虑这个半手动执行此代码的代码:

   var dictionary = new Dictionary<string, IEnumerable<Report>>
    {
        {typeof (CommentReport).Name, ReportEntitiesContainer.Instance.Reports.OfType<CommentReport>()},
        {typeof (BlogPostReport).Name, ReportEntitiesContainer.Instance.Reports.OfType<BlogPostReport>()},
        {typeof (NewsItemReport).Name, ReportEntitiesContainer.Instance.Reports.OfType<NewsItemReport>()},
        {typeof (ThreadReport).Name, ReportEntitiesContainer.Instance.Reports.OfType<ThreadReport>()},
        {typeof (UserProfileReport).Name, ReportEntitiesContainer.Instance.Reports.OfType<UserProfileReport>()},
        {typeof (ImageReport).Name, ReportEntitiesContainer.Instance.Reports.OfType<ImageReport>()}
    };

有没有办法表达逻辑,理解我想要实现这种分组并完成,而不必手动硬编码逻辑中的所有子类?

澄清:上面示例中使用字典的键的类型并不重要。它可以是名称或类型等等。

澄清2:问题是如果可以作为IQueryable完成,而不是在分组之前加载所有行。我知道上面的例子存在一些不匹配。

0 个答案:

没有答案