[aspnetboilerplate]如何扩展 PagedAndSortedResultRequestDto 以接受过滤器?

[aspnetboilerplate]How to extend PagedAndSortedResultRequestDto to accept filters?

我正在尝试将过滤器传递给 PagedAndSortedResultRequest。

public class PagedAndSortedResultRequestDto : PagedResultRequestDto, IPagedAndSortedResultRequest
{
    public virtual string Sorting { get; set; }
}

我想将一个简单的名称-值对列表传递给此 DTO,以便过滤结果集。

当前的实现不允许我这样做,所以我必须创建一个新的 class 继承 PagedAndSortedResultRequestDto。我想知道这是否是实现我的目标的正确途径,是否有任何里程碑可以在框架中容纳过滤器。

谢谢

根据@AlperEbicoglu 的建议,这是我的解决方案。 该解决方案需要三个部分。继承请求 dto class,AppService 传递 class,并覆盖 AppService 内部的 CreateFilteredQuery 方法。

//Inherited Request DTO Class
[Serializable]
public class MyResultRequestDto : PagedAndSortedResultRequestDto
{
    public virtual int? ChannelId { get; set; }
}

//AppService 
public class MyAppService : AsyncCrudAppService<Tenant, MyDto, int, MyResultRequestDto, CreateMyDto, MyDto>, IMyAppService
{

    //Overridden CreateFilteredQuery inside of MyAppService
    protected override IQueryable<MyEntity> CreateFilteredQuery(MyResultRequestDto input)
    {
        var query = Repository.GetAll();

        if (input.ChannelId.HasValue)
        {
            query = query.Where(t => t.ChannelId == input.ChannelId.Value);
        }
        return query;
    }
//...
}

希望对有需要的人有所帮助。