【发布时间】:2015-01-27 01:49:21
【问题描述】:
我有一组故事和评论,我试图在被 API 调用时返回一个较小的 DTO 实体。
我正在尝试仅检索最后一条评论,但收到错误消息“LINQ to Entities 不支持指定类型成员 'LastComment'。仅支持初始化程序、实体成员和实体导航属性。”
我的故事.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,但我不确定解决此问题的正确方法。
【问题讨论】:
-
如果我想添加一个额外的谓词,另一个例子很好,但这里我试图获取列表的最后一项,我不确定从哪里开始
-
另一个例子仍然适用。将
p.LastComment更改为p.Comments.LastOrDefault(),它应该可以工作。 -
更改为 p.Comments.LastOrDefault() 无效
标签: c# linq entity-framework