繁体   English   中英

如何申请跳过并接受

[英]how to apply Skip and Take on Include

我有一个名称为Tag 每个标签都有一些NewsArticle和“投票”。 我想要获取所有具有Tag的相关帖子。 为此,我使用以下查询:

 public Tag Get(string tagName, int page, int recordsPerPage = 10)
    {
        int skip = page * recordsPerPage;
        return 
            _tags.Where(tag => tag.Title.ToLower() == tagName.ToLower()).Include(row => row.Articles
            .OrderByDescending(n => n.Code).Skip(skip).Take(recordsPerPage).ToList())
            .Include(row => row.News.AsQueryable()).OrderBy(news => news.Code).Skip(skip).Take(recordsPerPage)
            .Include(row => row.Polls).OrderByDescending(poll => poll.Code).Skip(skip).Take(recordsPerPage).FirstOrDefault();
}

但是当我运行Project时出现此错误:

包含路径表达式必须引用在类型上定义的导航属性。 使用虚线路径作为参考导航属性,使用“选择”运算符作为集合导航属性。

您不能将表达式传递给不是属性表达式的Include方法,请查看您的代码

.Include(row => row.Articles.OrderByDescending(n => n.Code).Skip(skip).Take(recordsPerPage).ToList())


.Include(row => row.News.AsQueryable())

如您所见,在include内,您正在调用许多方法,这是不允许的。

您必须为此更改:

.Include(row => row.Articles)
.Include(row => row.News)

让我尝试改善您的代码,您当前的代码是这样的:

_tags.Where(tag => tag.Title.ToLower() == tagName.ToLower()).Include(row => row.Articles
            .OrderByDescending(n => n.Code).Skip(skip).Take(recordsPerPage).ToList())
            .Include(row => row.News.AsQueryable()).OrderBy(news => news.Code).Skip(skip).Take(recordsPerPage)
            .Include(row => row.Polls).OrderByDescending(poll => poll.Code).Skip(skip).Take(recordsPerPage).FirstOrDefault();

让换行符

_tags.Where(tag => tag.Title.ToLower() == tagName.ToLower())
     .Include(row => row.Articles.OrderByDescending(n => n.Code).Skip(skip).Take(recordsPerPage).ToList())
     .Include(row => row.News.AsQueryable())
     .OrderBy(news => news.Code)
     .Skip(skip)
     .Take(recordsPerPage)
     .Include(row => row.Polls)
     .OrderByDescending(poll => poll.Code)
     .Skip(skip)
     .Take(recordsPerPage)
     .FirstOrDefault();

如果只需要一个Tag,则无需进行这种大型方法链接,可以使用以下方法简化操作:

public Tag Get(string tagName, int page, int recordsPerPage = 10)
{
    return _tags.Include(tag => row.Articles).Include(tag => row.News).Include(tag => row.Polls)
         .OrderBy(tag => news.Code)
         .FirstOrDefault(tag => tag.Title.ToLower() == tagName.ToLower());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM