我正在使用Entity Framework 5,我有这些类:
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)
.Include(s => s.Topics.) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.AsEnumerable()
.Select(item => new TopicSubTopicSelect(item.TopicId,
item.SubTopicId,
item.Topic.Name,
item.Name))
.ToList();
但它给我一个错误,我把它放在&lt;&lt;&lt;&lt;&lt;&lt;
我想要的是.Include(s =&gt; s.Topics.SubTopics)
然而intellisense并没有给我这个选项。我有什么想法 做错了我怎么能修改LINQ以获取数据来填充TopicSubTopicSelect类
答案 0 :(得分:2)
.Include(s => s.Topics.Select(t => t.SubTopics))
在.Select()
中使用.Include()
获取所需的加入。
制作一个简单的项目进行测试,我收到了以下内容:
答案 1 :(得分:2)
这将为您提供所需的结果 -
.Include(s => s.Topics.SelectMany(t => t.SubTopics))
如果.Select
是SubTopic
,请使用property
,如果是list
,请使用.SelectMany
。
有关更多说明,请参阅Select Vs SelectMany。