[英]Skip and Take for nullable / optional parameters
我有一個REST API,其中包含一些可用於分頁的可選參數。 由於那里可以為空,所以我寫了這段代碼
public async Task<DataResult<List<ItemDTO>>> GetItem( int? skip, int? top)
{
var result = await _itemRepository.FilterManyAsync();
if (skip.HasValue)
result.Entities = result.Entities.Skip(skip.Value);
if (top.HasValue)
result.Entities = result.Entities.Take(top.Value);
}
但是LINQ是否沒有優雅的方法來做到這一點?
我不明白您為什么認為linq具有這種功能。 當然,您應該首先檢查您的參數是否具有值,如果是這樣的話,請跳過或采用該值。
但是,您可以為此創建自己的擴展名:
IEnumerable<T> SkipOrAll(this IEnumerable<T> src, int? skip)
{
return skip.HasValue ? src.Skip(skip) : src;
}
等效於TakeOrAll
:
IEnumerable<T> TakeOrAll(this IEnumerable<T> src, int? take)
{
return take.HasValue ? src.Take(take) : src;
}
可以很容易地這樣稱呼它:
var result = source.SkipOrAll(skip).TakeOrAll(take);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.