вопрос я уже просил System.NotSupportedException - Cannot compare elements of type 'System.Linq.IQueryableNull проверка в Linq запрос
был ответ с ответом https://stackoverflow.com/a/41822351/2004251
метод в приведенном выше вопрос был модифицирован из ниже
public List<User> GetActiveUsers(int? officeID, string roleID, string query)
{
return (from user in GetDBContext.User
join userRole in GetDBContext.UserRole
on user.UserID equals userRole.UserID
join userOffice in GetDBContext.UserAuthorizedOffice
on user.UserID equals userOffice.UserID
where user.IsActive == true &&
user.UserTypeID == 1 &&
userOffice.IsAuthorized &&
userOffice.Office.IsActive &&
(userOffice.OfficeID == officeID || officeID == null) &&
string.Equals(userRole.RoleID, roleID) &&
(user.FirstName + user.LastName).Contains(query)
select user).ToList();
}
Этот метод работает ожидается.
Мой вопрос: если null
проверка работает в этом методе, почему она не работает, когда входной параметр преобразуется в IEnumerable<int>
Я не эксперт SQL, но это мое предположение. В этом случае он видит, что одно значение «int?» Равно null, которое имеет эквивалент SQL. В указанном вопросе вы проверяете, является ли вся коллекция нулевой, что не так просто преобразовать в инструкцию SQL. – Abion47
Какой _input параметр_ изменен на 'IEnumerable', officeID? Это будет совершенно другой запрос. –
@TimSchmelter Да, 'int? officeID' был изменен на 'IEnumerable officeIDs' –
gvk