J'ai un petit malentendu ici, pourquoi ai-je ici une erreur dois-je analyser ce qui ne va pas avec ce code?
UberTrackerEntities ctx = UberFactory.Context;
IEnumerable<HtUser> users = HtUser.GetAll();
string selectedBU = rcbBusinessUnits.SelectedValue;
string selectedDepartment = rcbDepartment.SelectedValue;
HtDepartment department = ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId ==selectedDepartment);
if (department != null)
{
users = users.Where(u => u.HtDepartments.Contains(department));
}
Merci pour l'aide et réponse rapide!
PS: Je pense que je suis juste au-dessus de la chose, il semble juste être une petite erreur stupide ...
Vous devez convertir selectedDepartment
en entier avant de le comparer dans la requête LINQ.
int selectedDepartment = Convert.ToInt32(rcbDepartment.SelectedValue);
Dans votre requête:
ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId == selectedDepartment);
d.DepartmentId
est de type int alors que selectedDepartment
est une chaîne et vous pouvez comparer les deux en utilisant l'opérateur ==
.
d.DepartmentId
est une int
et selectedDepartment
est une chaîne.
Vous devrez convertir en utilisant Int32.Parse
, Int32.TryParse
ou Convert.ToInt32
Modifier:
int selectedDepartmentId = Convert.ToInt32(selectedDepartment);
HtDepartment department = ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId == selectedDepartmentId));
Votre département sélectionné est de type chaîne et votre identifiant est de type int. Vous devriez convertir votre selectedDepartment en un int:
int selectedDepartment = Convert.ToInt32(rcbDepartment.SelectedValue);