我正在使用此代码返回Api中的对象列表:
[HttpGet("/api/product")]
public async Task<QueryResultResource<PositionResource>> GetProducts(JobQueryResource queryObjResource)
{
var jobs = await context.Job.ToListAsync();
var projects = await context.Project.ToListAsync();
var volunteerships = await context.Volunteership.ToListAsync();
var internships = await context.Internship.ToListAsync();
var products1 = mapper.Map<IEnumerable<Job>, IEnumerable<PositionResource>>(jobs);
foreach (var p in products1)
p.ProductType = "Job";
var products2 = mapper.Map<IEnumerable<Project>, IEnumerable<PositionResource>>(projects);
foreach (var p in products2)
p.ProductType = "Project";
var products3 = mapper.Map<IEnumerable<Volunteership>, IEnumerable<PositionResource>>(volunteerships);
foreach (var p in products3)
p.ProductType = "Volunteership";
var products4 = mapper.Map<IEnumerable<Internship>, IEnumerable<PositionResource>>(internships);
foreach (var p in products4)
p.ProductType = "Internship";
var products = products1.Concat(products2).Concat(products3).Concat(products4).AsQueryable();
products = products.OrderByDescending(x => x.CreationDate);
products = products.Where(x => x.IsActive == true).AsQueryable();
var queryObj = mapper.Map<JobQueryResource, JobQuery>(queryObjResource);
var result = new QueryResult<PositionResource>();
var columnsMap = new Dictionary<string, Expression<Func<PositionResource, object>>>()
{
["title"] = j => j.Title,
["city"] = j => j.City,
["Type"] = j => j.Type,
["Industry"] = j => j.Industry
};
products = products.ApplyOrdering(queryObj, columnsMap).AsQueryable();
result.TotalItems = await products.CountAsync();
products = products.ApplyPaging(queryObj);
result.Items = await products.ToListAsync();
return mapper.Map<QueryResult<PositionResource>, QueryResultResource<PositionResource>>(result);
}
我收到内部服务器错误。我删除了await关键字并使用了Count()和ToList()来实现
result.TotalItems = await products.CountAsync();
...
result.Items = await products.ToListAsync();
它没有错误,我不明白为什么。
也许这是产生问题之前的步骤之一?