Reputation: 15239
In an ASP.NET Core WebApi Controller, I try to return a json { payload: myArray }
[HttpGet]
public async Task<IActionResult> GetEntriesPaged(int? page, int pageSize = 10) {
...
return Ok( await new { payload = query.ToListAsync() }); }
Error CS1061 ' payload>' does not contain a definition for 'GetAwaiter' and no accessible extension method 'GetAwaiter' accepting a first argument of type ' payload>' could be found (are you missing a using directive or an assembly reference?)
PS. The whole function to better understanding
[HttpGet]
public async Task<IActionResult> GetEntriesPaged(int? sourceId, string filter, int? pageIndex, int pageSize = DEFAULT_PAGESIZE, string sortOrder = Order.DESC) {
IQueryable<Entry> query = _db.Entries;
// 0. Filter by sourceId
if (sourceId.HasValue) {
query = query.Where(e => e.SourceId == sourceId.Value);
}
// 1. Filter by message or subject or from or to
if (!string.IsNullOrWhiteSpace(filter)) {
query = query.Where(e => e.Message.Contains(filter) || e.Subject.Contains(filter) || e.From.Contains(filter) || e.To.Contains(filter));
}
// 2. Order by Date
if (string.IsNullOrWhiteSpace(sortOrder) || sortOrder.ToLower() != Order.ASC) { sortOrder = Order.DESC; }
sortOrder = sortOrder.ToLower();
if (sortOrder == Order.ASC) {
query = query.OrderBy(x => x.Date);
}
else {
query = query.OrderByDescending(x => x.Date);
}
// 3. Get paged elements (Skip & Take)
if (pageIndex.HasValue) {
if (pageIndex < 0) { pageIndex = 0; }
if (pageSize < 1) { pageSize = 1; }
int take = pageSize;
int skip = (pageIndex.Value * pageSize);
var paginationMetadata = new {
totalCount = query.Count(),
pageSize = pageSize,
currentPage = pageIndex
};
Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata));
query = query.Skip(skip).Take(take);
}
return Ok( await new { payload = query.ToListAsync() });
}
Upvotes: 0
Views: 811
Reputation: 14007
You need to await the ToListAsync
:
return Ok( new { payload = await query.ToListAsync() });
Upvotes: 2