linq - LINQ 查询在 Dot Net Core 2.2 但在 3.1 中工作正常
问题描述
下面的 LINQ 查询按预期工作,Dot Net Core 2.2
但是当我升级到3.1
它时会引发运行时执行。
[HttpGet("{SINo}")]
public async Task<IEnumerable<dynamic>> SaleHistory(string SINo)
{
return await (from s in _context.Sales
where s.saleInvNo.Contains("|")
? s.saleInvNo.Split("|", StringSplitOptions.None)[1] == SINo
: s.saleInvNo == SINo
select new
{
s.saleDate,
s.saleInvNo
}).ToListAsync();
}
无法翻译。以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估
如何更改此可翻译查询?
注意:销售表有约 100 万条记录。从中,我只想获得一张唱片。
解决方案
string.Split
在 LINQ to Entities 中不受支持。这样您就需要按照以下方式一起使用Substring
和。IndexOf
采用:
s.saleInvNo.Substring(s.saleInvNo.IndexOf("|") + 1) == SINo
代替:
s.saleInvNo.Split("|", StringSplitOptions.None)[1] == SINo
请参阅:拆分嵌套在实体框架中
顺便说一句,您应该考虑@DavidG的建议:
还要查看此查询,我强烈建议您规范化此数据以将“SINNo”值拆分为自己的列 - 没有很好的方法来查询这种类型的数据
推荐阅读
- c++ - SetupDiSetClassInstallParamsW Windows API 失败
- spring - 2个作业之间的Spring批处理分区器同步
- java - 在 Android Studio [Java] 中加载 mapbox 地图后绘制标记
- java - 如何在此 saveMyImage 方法中从 url 获取图像名称
- c++ - 链接 fortran 和 c++
- websphere - 如何增加 WAS 自由服务器 messages.log 文件的大小?
- snowflake-cloud-data-platform - 我无法再查询我的视图并且我的代码故障转移,有什么建议吗?
- java - Spring应用程序中的空存储库,即使所有对象都被自动装配并且从未手动实例化
- jsf - 使用 http2 时出现 java.nio.channels.ClosedChannelException
- python - LU分解中除以零警告-Doolittle算法工作