我在try 按Customer.name或Customer.Legalname进行排序时遇到此错误. 但如果我按标题排序,它就行了
public async Task<ActionResult<ResultSet<Registry>>>
GetRegistries([FromQuery]ListOptions<RegistryFilter> options = null) {
var query = DbContext.Registries.AsNoTracking()
query = select new Registry {
Id = registry.Id,
Alias = registry.Alias,
Customer = new Customer {
Id = registry.Customer.Id,
LegalName = registry.Customer.LegalName,
Name = registry.Customer.Name,
},
Title = registry.Title,
Membership = membership.Role
};
}
if (!string.IsNullOrWhiteSpace(options.Search)) {
var term = options.Search.Trim().ToLowerInvariant();
query = query.Where(x =>
x.Title.ToLower().Contains(term) ||
x.Customer.LegalName.ToLower().Contains(term) ||
x.Customer.Name.ToLower().Contains(term));
}
return await query.ToResultSetAsync(options);
并且我收到以下错误
System.InvalidOperationException:LINQ表达式的DbSet .LeftJoin( 外部:DbSet, 内部:D=>;EF.Property<;可为空的>;(d,"CustomerId"), OuterKeySelector:d0=>;EF.Property<;可为空的>;(d0,"ID"), InnerKeySelector:(O,I)=>;新的透明标识符<;数据库注册表,数据库客户&>( 外部=o, 内部=i )) .OrderBy(d=>;EF.Property<;Nullable>;(d.Inside,"ID")==NULL?空:新客户{ Id=d.Inner.ID, LegalName=d.Inner.LegalName, 名称=d.Inner.Name } .name)‘无法翻译.以可翻译的形式重写查询,或者通过插入对AsEnumerable()、AsAsyncEnumerable()、ToList()或ToListAsync()的调用来显式切换到客户端计算.