![](/img/trans.png)
[英]EF Core 3.1 - The LINQ expression could not be translated (left joins with group by)
[英]The LINQ expression could not be translated in EF Core 3.1
我正在尝试使用 EF Core 3.1 返回任何列中包含指定短语的行。 我收到异常:
InvalidOperationException: LINQ 表达式 'DbSet
.Where(b => __stringProperties_0.Any(y => __Functions_1.Like(
_: y.GetValue( obj: b, index: null).ToString(), matchExpression: __p_2)))' 无法翻译。 以可以翻译的形式重写查询,或者通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用来显式切换到客户端评估。 有关详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=2101038 。
我怎样才能重写这个查询来避免这个异常?
public async Task<List<Table>>
GetDataAsync(string query)
{
var stringProperties = typeof(Table).GetProperties().Where(prop => prop.PropertyType == query.GetType());
return await _context.Table
.Where(x => stringProperties
.Any(y => (EF.Functions.Like(y.GetValue(x, null).ToString(), "%" + query + "%"))))
.AsNoTracking().ToListAsync();
}
我认为这个查询应该这样做,我在这里使用 EF.Property 方法而不是反射。
return await _context.Table
.Where(x => stringProperties
.Any(y => (EF.Functions.Like(EF.Property<string>(x, stringProperties), "%" + query + "%"))))
.AsNoTracking().ToListAsync();
希望能帮助到你!
var persons = _PersonRepository.TableNoTracking.Where(expression)
.ProjectTo<PersonSmallInfoDTO>(_mapper.ConfigurationProvider).AsEnumerable();
写.AsEnumerable()结束你的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.