【发布时间】:2021-11-22 22:13:18
【问题描述】:
我尝试在Linq 查询中使用 Orderby,但出现以下错误:
.OrderBy(p => p.Name)' 无法翻译。以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估
产品.cs
public string Name =>
NameTranslations?.FirstOrDefault( nt => nt.LanguageCode == LanguageCode.UK )?.Value;
public List<Translation> NameTranslations { get; set; }
所以当我尝试使用以下代码时,我得到一个错误:
var result = _db.Products.OrderBy( x => x.name);
//some logic to change resultQuery
我不想带入内存并使用OrderBy,因为我有一些逻辑要更改我的IQueryable
顺便加一下代码就可以解决,但是我不想这样用
.OrderBy( x => x.NameTranslations.FirstOrDefault( nt => nt.LanguageCode == LanguageCode.UK)
.Value)
【问题讨论】:
-
看起来
Name是一个未映射的属性,它返回此x.NameTranslations.FirstOrDefault...。 EF 无法将其转换为 SQL,因此您必须像在最后一个代码片段中那样进行操作。
标签: c# sql-server linq