У меня есть простой список целых чисел, обозначающих дни недели. Я пытаюсь проверить, находится ли свойство Date моей сущности в выбранные дни недели. Но если я попытаюсь передать его в запросе, ориентированном на базу данных, например:
query.Where(e => selectedDaysOfWeek.Contains((int)e.Date.DayOfWeek));
, я получу исключение:
Выражение LINQ ... не может быть переведено. Либо перепишите запрос в форме, которая может быть переведена, либо явно переключитесь на оценку клиента, вставив вызов либо AsEnumerable (), AsAsyncEnumerable (), ToList (), либо ToListAsyn c ().
Если я, с другой стороны, сначала выполняю запрос, вызывая ToList()
(например), а затем добавляю то же условие where в результирующий список, оно работает:
var items = query.ToList();
items = items.Where(e => selectedDaysOfWeek.Contains((int)e.Date.DayOfWeek)).ToList();
Хотя в моем случае это допустимо, я хотел бы получать меньше элементов из базы данных. Есть ли способ проверить DayOfWeek при запросе db в соответствии с моим первоначальным намерением?