错误CS1929“IEnumerable”不包含“OrderBy”的定义,并且最佳扩展方法重载“DynamicQueryableExtensions.OrderBy(IQueryable, string, params object[])”需要“IQueryable”类型的接收器
我在以下查询中收到此错误。
var designationDtos = queryResult.Select(x =>
{
var designationDto = ObjectMapper.Map<Designation, DesignationDto>(x.designation);
designationDto.DepartmentName = x.department.Name;
return designationDto;
}).OrderBy(input.Sorting).ToList();
Run Code Online (Sandbox Code Playgroud)
问题出在 OrderBy 上。如果我删除 orderby 那么一切都会正常。而 input.Sorting 是一个 string 。
这是因为IEnumerable没有这样的OrderBy,但是您有自定义扩展来IQueryable接受这样的参数。
var designationDtos = queryResult.Select(x =>
{
var designationDto = ObjectMapper.Map<Designation, DesignationDto>(x.designation);
designationDto.DepartmentName = x.department.Name;
return designationDto;
})
.AsQueryable()
.OrderBy(input.Sorting)
.ToList();
Run Code Online (Sandbox Code Playgroud)
另外考虑在这次查询中不要使用Automapper或者完成映射配置,那么查询会更加有效。
query.ProjectTo<DesignationDto>(configuration)
.OrderBy(input.Sorting)
.ToList();
Run Code Online (Sandbox Code Playgroud)