我目前收到以下错误

我的代码是

public List<User> GetActiveUsers(IEnumerable<int> officeIDs, 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 &&
                    (officeIDs == null || officeIDs.Contains(userOffice.OfficeID)) &&
                    string.Equals(userRole.RoleID, roleID) &&
                    (user.FirstName + user.LastName).Contains(query)
            select user).ToList();
}
问题似乎已被抛弃(officeIDs == null || officeIDs.Contains(userOffice.OfficeID))如果删除第一个条件officeIDs == null,查询将完美执行。
谁能解释我所缺少的内容或为什么会引发此错误。

最佳答案

不能将officeIDs == null覆盖到sql语句中
更改以下内容:

(officeIDs == null || officeIDs.Contains(userOffice.OfficeID))

首先检查函数顶部是否为null:在后面加上括号
officeIDs = officeIDs ?? Enumerable.Empty<int>();

并替换为该查询:
(!officeIDs.Any() || officeIDs.Any(id => id == userOffice.OfficeID))

10-06 04:34