首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换LINQ跳过并进入自定义分页逻辑

转换LINQ跳过并进入自定义分页逻辑
EN

Stack Overflow用户
提问于 2015-03-13 16:35:49
回答 1查看 969关注 0票数 0

我正在使用ASP.NET Web创建一个RESTful API。典型的控制器是使用LINQ对象从我的存储库中请求实体。我的存储库不使用实体框架,也不访问任何数据库。相反,它使用外部RESTFul服务进行数据访问。控制器使用Skip()和and ()来实现分页。

我想了解的部分是,在调用外部web服务时转换Skip()和将()作为请求参数是否有意义。换句话说:我有兴趣了解LINQ的Skip()和Take()是否可以用于对外部web服务的调用应用分页,而不是在包含所有对象的结果IEnumerable上应用分页。

这是一个典型的LINQ语句,用于从我自己的存储库中检索数据。

代码语言:javascript
运行
复制
var userRoles = from userRole in Repository.UserRole.Load()
                            .Skip(10)
                            .Take (10)
                            select ModelFactory.Create(userRole);

我的存储库将从外部web服务请求数据,如下所示:

代码语言:javascript
运行
复制
protected override IEnumerable<UserRole> LoadAll()
{
    //....
    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri(GetUrl());
    string parameters = 
             String.Format("?sessionkey={0}&take={1}&skip={2}", take, skip, Session);
    HttpResponseMessage response = client.GetAsync(parameters).Result;
    //....skipped. deseralize response using JsonConvert and return IEnumerable<UserRole>
}

使用LINQ查询并将其转换为web请求的获取和跳过参数是可能和合理的,还是应该将普通的跳转&取整数参数传递给LoadAll()方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-13 16:40:37

只需将takeskip值传递到LoadAll()方法中(或者我的首选是使用pagepageSize值并将它们转换为takeskip)。

虽然很可能会想出一些LINQ提供程序,允许提取所使用的TakeSkip,并以某种方式将它们路由到您的系统中,但这比它所能提供的任何好处都要复杂得多。

如果您担心显式的takeskip参数暴露了存储库的实现细节,那么就更有理由使用pagepageSize,并在幕后将它们转换为takeskip。我想说的是,这不会暴露您的存储库是如何分页的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29037460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档