【发布时间】:2021-05-07 00:26:31
【问题描述】:
我有以下代码不起作用:
var bookIds = source.Sids.Split(",");
var hkm = _context.Books
.Include(b => b.Writer)
.Where(b => bookIds.Contains(b.SttmId.toString()))
.ToList();
再澄清一下上面的代码:
// kinda same like the code above (just to clarify what source is):
// This doesn't work
var bookIds = "2194".Split(",");
var hkm = _context.Books
.Include(b => b.Writer)
.Where(b => bookIds.Contains(b.SttmId.toString()))
.ToList();
// This works
var bookIds = 2194;
var hkm = _context.Books
.Include(b => b.Writer)
.Where(b => b.SttmId == bookIds))
.ToList();
b.SttmId 的类型为 Nullable Long:long?
我收到一个奇怪的错误:
---> System.InvalidOperationException:LINQ 表达式 '数据库集 .Where(s => __BooksIds_0 .Contains(b.SttmId.ToString()))' 无法翻译。要么以可翻译的形式重写查询,要么切换 通过插入对任何一个的调用来明确地进行客户评估 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync()。
是我做错了什么还是 EF Core 有什么问题?
【问题讨论】:
-
我也试过了:
Convert.ToString(b.SttmId)也没有用。 -
b.SttmId 是什么类型?您是否尝试过使您的数组与 db 属性的类型相同?
-
嗨@CaiusJard 在我提到的问题中,它的类型是
long?:) -
抱歉,我认为您的编辑与我的评论有冲突——没有看到您这么长时间提及它
-
@OS 您使用的数据库是什么? SQL Server、MySQL、Oracle?
标签: c# asp.net-core .net-core entity-framework-core