我正在使用实体框架5,我有这些类。我想要做的是能获得数据来填充下列观点:如何从LINQ查询中的.Include字段获取数据?
public partial class Subject
{
public int SubjectId { get; set; }
public string Name { get; set; }
public virtual ICollection<Topic> Topics { get; set; }
}
public partial class Topic
{
public int TopicId { get; set; }
public string Name { get; set; }
public int SubjectId { get; set; }
public virtual Subject Subject { get; set; }
public virtual ICollection<SubTopic> SubTopics { get; set; }
}
public partial class SubTopic
{
public int SubTopicId { get; set; }
public string Name { get; set; }
public int TopicId { get; set; }
public virtual Topic Topic { get; set; }
}
现在我想写一个LINQ查询来填充这个类:到目前为止
public class TopicSubTopicSelect
{
public int TopicId { get; set; }
public int SubTopicId { get; set; }
public string TopicName { get; set; }
public string SubTopicName { get; set; }
}
我有这样的:
return _subjectsRepository
.GetAll()
.Where(s => s.SubjectId == subjectId)
.Include(s => s.Topics.SelectMany(t => t.SubTopics))
.AsEnumerable()
.Select(item => new TopicSubTopicSelect(item.TopicId <<<
item.SubTopicId <<
item.Topic.Name <<
item.Name <<))
.ToList();
谁能告诉我怎样才能得到我打上< <字段中的数据。我试图做.item.Topic.TopicId等,但似乎并没有工作。
希望这'.GetAll()''是不是IQueryable''IEnumerable' ......,不应该SubTopicRepository有'GetBySubjectId'方法来封装这个查询而不是暴露它? –
SubjectRepository应该有一个GetBySubjectId,而不是SubTopicRepository。 – ataravati
你的例子是使用SubTopicRepository,这就是为什么我提到它 - 严格来说,它不应该存在! Topic是聚合根,如果没有Topic,SubTopics是没有意义的,所以入口点应该始终是Topic。 –