小编cl0*_*l0h的帖子

评估顺序c#

我查看了同事代码并告诉他Any出于性能原因重新排序以下Linq 谓词中的布尔比较.所以给定

public class JobResult
{
    public JobResult();

    public string Id{ get; set; }
    public StatusEnum Status{ get; set; }
    public string JobType{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

IList<JobResult> jobsList = _jobRepository.FetchJobs()
Run Code Online (Sandbox Code Playgroud)

我建议改变以下内容:

//Exit if there is already a job of type "PurgeData" running
if (jobsList.Any(job => job.Status == JobStatus.Running //1
                     && job.Id != currentJobId          //2
                     && job.JobType == "PurgeData")) //3
    return false;
Run Code Online (Sandbox Code Playgroud)

成为

//Exit if there is already a job of type "PurgeData" running
if (jobsList.Any(job => …
Run Code Online (Sandbox Code Playgroud)

c# linq

6
推荐指数
1
解决办法
521
查看次数

在 WebAPI 应用程序中运行时设置 OData 结果页面大小

我正在使用 OdataControllers 编写 ASP.NET Web API 2 Web 服务,我已经找到了如何使用EnableQueryAttributePageSize属性设置页面大小。我想允许我的 Web 服务的用户在 app.config 中设置页面大小,然后让应用程序读取此设置并设置页面大小。问题是使用该属性需要将“页面大小”设置为编译时常量。

属性的用法:

[EnableQuery(PageSize = 10)]
public IHttpActionResult GetProducts()
{
    return repo.GetProducts();
}
Run Code Online (Sandbox Code Playgroud)

我见过的一种建议解决方案是构造 EnableQueryAttribute 并将其设置在 HTTPConfiguration 配置对象上,如下所示

int customSize = ReadPageSizeSettingFromConfigFile();

var attr = new EnableQueryAttribute { PageSize = customSize };
config.AddODataQueryFilter(attr);
Run Code Online (Sandbox Code Playgroud)

但这实际上不起作用。HttpConfiguration 的 Filter 集合保持为空。

配置对象监视视图

另一篇文章的评论(隐藏在评论列表中)建议删除控制器上的所有 EnableQuery 属性,但这也没有效果。由于 EnableQuery 属性取代了旧的Queryable属性,我想知道这是否是 Microsoft 的问题。

这个问题之前已经被问过但没有得到回答:How limit OData results in a WebAPI

非常感谢所有帮助。

asp.net odata asp.net-web-api2

0
推荐指数
1
解决办法
9142
查看次数

标签 统计

asp.net ×1

asp.net-web-api2 ×1

c# ×1

linq ×1

odata ×1