Writing queries
We will now create our first query, which is a request for reading data, and a query handler, which will resolve what the query needs. Again, the controller is responsible for sending or dispatching the queries to the relevant handlers.
The following is a block of code for ExportToursQuery and its handler. You will see later how the controller will use ExportToursQuery as an argument in the mediator's Send method:
// ExportToursQuery.cs
using AutoMapper;
using AutoMapper.QueryableExtensions;
using MediatR;
…
namespace Travel.Application.TourLists.Queries.ExportTours
{
  public class ExportToursQuery : IRequest<ExportToursVm>
  {
    public int ListId { get; set; }
  }
  public class ExportToursQueryHandler :
    IRequestHandler<ExportToursQuery, ExportToursVm>
  {
    …
    public async Task<ExportToursVm...