私は現在、以下のエラーに種類の例外System.NotSupportedException - タイプの要素を比較することはできません「System.Linq.IQueryable
を取得していますが 『System.NotSupportedException』> EntityFramework.SqlServer.dllで発生したが、でしたユーザーコードで処理されない
追加情報: 'System.Linq.IQueryable`1 [System.Int32、mscorlib、Version = 4.0.0.0、> Culture =ニュートラル、PublicKeyToken = b77a5c561934e089]]の要素を比較できません' 。プリミティブ型、>列挙型およびエンティティ型のみがサポートされています。
私のコードは、クエリが完全に実行し、
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 == null || officeIDs.Contains(userOffice.OfficeID))
から投げているように見えるです。
誰かが私が逃していること、またはこのエラーがなぜ投げられたのか説明してください。
nullの場合は何も返されません。代わりに 'query = from ........'(ToListなし)を実行し、 'officeIDsがnullでない場合{query.Where ....} return query' –