Eine Frage, die ich fragte vorher System.NotSupportedException - Cannot compare elements of type 'System.Linq.IQueryableNull-Check in Linq-Abfrage
wurde mit der Antwort antwortete https://stackoverflow.com/a/41822351/2004251
Das Verfahren in der obigen Frage aus der unten
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();
}
wurde modifiziert Diese Methode funktioniert wie erwartet.
Meine Frage: Wenn null
Prüfung in dieser Methode funktioniert, warum es nicht funktioniert, wenn der Eingabeparameter zu IEnumerable<int>
ich kein SQL-Experte bin, aber das ist meine Vermutung. In diesem Fall wird festgestellt, ob ein einzelner int? -Wert gleich null ist und eine SQL-Entsprechung hat. In der referenzierten Frage prüfen Sie, ob eine ganze Sammlung null ist, was nicht so einfach in eine SQL-Anweisung konvertiert werden kann. – Abion47
Welcher _Eingangsparameter_ wird geändert in 'IEnumerable', officeID? Das wäre eine völlig andere Abfrage. –
@TimSchmelter Ja, 'int? officeID' wurde geändert in 'IEnumerable officeIDs' –
gvk