GetAllInInclude包括相关表的最后一条记录

时间:2019-01-09 10:51:02

标签: c# entity-framework aspnetboilerplate

 var kitContents = await _kitItemRepository.GetAllIncluding(ki => ki.Campaign, ki => ki.Item, ki => ki.Comments.LastOrDefault()).Where(ki=>ki.KitId == input.kitId).ToListAsync();

我希望只有最后一条记录(给有评论),但是它会引发错误。

  

System.InvalidOperationException:“包含属性lambda表达式'ki => {ki.Comments => LastOrDefault()}”无效。该表达式应表示属性访问:“ t => t.MyProperty”。要定位在派生类型上声明的导航,请指定目标类型的显式键入的lambda参数,例如'(派生d)=> d.MyProperty'。有关包含相关数据的更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=746393。'

2 个答案:

答案 0 :(得分:1)

您不能像这样使用LastOrDefault()。获取所有评论并删除除最后一条以外的所有评论。

答案 1 :(得分:-1)

    var lastComment = _kitItemRepository.GetAll().LastOrDefault(ki=>ki.KitId == input.kitId).Comments;

    var kitContents = await _kitItemRepository.GetAll()
                .Select(ki => new 
                {
                    Campaign = ki.Campaign,
                    Item = ki.Item,
                    Comments = lastComment
                })
                .ToListAsync();