.Contains() в .Where() EF Core не работает .NET Core 3.1.8C#

Место общения программистов C#
Anonymous
.Contains() в .Where() EF Core не работает .NET Core 3.1.8

Сообщение Anonymous »

У меня следующий код не работает:

Код: Выделить всё

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
'DbSet
.Where(s => __BooksIds_0
.Contains(b.SttmId.ToString()))' не может быть переведено. Либо перепишите запрос в форме, которую можно перевести, либо явно переключитесь
на клиентскую оценку, вставив вызов
AsEnumerable(), AsAsyncEnumerable(), ToList() или ToListAsync().< /p>

Я делаю что-то не так или что-то не так с EF Core?

Подробнее здесь: https://stackoverflow.com/questions/660 ... core-3-1-8

Вернуться в «C#»