LINQ to Entities不支持指定的类型成员

时间:2014-11-28 11:49:43

标签: c# linq entity-framework

我有一套故事和评论,我正在尝试在被API调用时返回一个较小的DTO实体。

我正在尝试仅检索最后一条注释,但收到错误“LINQ to Entities中不支持指定的类型成员'LastComment'。仅支持初始值设定项,实体成员和实体导航属性。”

My Story.cs:

public Story()
{
    Comments = new List<Comment>();
}
public int StoryId { get; set; }
public List<Comment> Comments { get; set; }

public Comment LastComment
{
    get
    {
        return Comments.LastOrDefault();
    }
}

我的API GET方法:

public IEnumerable<StoryDTO> Get()
{
    return from p in db.Stories
               .Include(x => x.Comments)
           select new StoryDTO()
           {
               StoryId = p.StoryId,
               LastComment = p.LastComment,
               NumberOfComments = p.Comments.Count

           };
}

我希望Linq无法将我的查询转换为SQL,但我不确定解决此问题的正确方法。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码:

return (db.Stories.Include(x => x.Comments)).AsEnumerable().Select(p => 
           new StoryDTO()
           {
               StoryId = p.StoryId,
               LastComment = p.LastComment,
               NumberOfComments = p.Comments.Count

           };

通过这种方式,您将处理LINQ to Objects,EF不会尝试将所有内容转换为SQL