在我的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完成,而不是在分组之前加载所有行。我知道上面的例子存在一些不匹配。