Я создаю IQueryable на основе параметров, которые я получаю от пользователя. Один из этих параметров - это множественный выбор, и мне нужно получить записи, содержащие любые из выбранных значений.
Код, который имеет дело с этим:
var ids = parameters.DeliveryID.ToArray();
courses = courses.Where(c => ids.Contains(c.CourseDeliveryID));
В приведенном выше коде:
1. ids - это массив байтов, и я должен убедиться, что он имеет несколько значений перед вызовом Contains().
2. c.CourseDeliveryID - значение байта.
В базе данных я храню CourseDeliveryID как tinyint (SQL Server 2008).
Компиляция просто прекрасна.
Когда я запускаю код, я получаю следующее исключение ArgumentException:
DbExpressionBinding requires an input expression with a collection ResultType.
Parameter name: input
Я нашел документацию для этого исключения: http://technet.microsoft.com/en-us/library/system.data.common.commandtrees.expressionbuilder.dbexpressionbuilder.bindas.aspx
При попытке решить проблему я обнаружил, что если я использую тот же код в shorts, ints или longs, у меня нет проблем.
Я общаюсь с Microsoft об этом со вчерашнего дня и буду обновлять, когда узнаю больше, но тем временем я решил, что брошу его здесь, чтобы получить больше советов, если это возможно.
Спасибо заранее!