Je réalise un projet de type webmail avec C#. J'ai un MultiSelectList dans lequel j'essaie de sélectionner tous les groupes dont l'utilisateur connecté est membre afin que l'utilisateur puisse les sélectionner et leur envoyer des messages, mais l'utilisateur n'est pas censé recevoir des groupes qui ne sont pas partie de.La requête C# .NET dans MultiSelectList ne fonctionne pas
Ce sont mes modèles:
public class Group
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<UserGroup> Users { get; set; }
}
public class ApplicationUser : IdentityUser
{
public DateTime LastLoggedIn { get; set; }
public int DeletedMessages { get; set; }
public int LoginCount { get; set; }
public virtual ICollection<UserGroup> Groups { get; set; }
}
public class UserGroup
{
[Key, ForeignKey("User")]
public string UserId { get; set; }
[Key, ForeignKey("Group")]
public int GroupId { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual Group Group { get; set; }
}
Et c'est le MultiSelectList avec la requête:
ViewData["ToGroupName"] = new MultiSelectList(_context.Group.Where(group =>
group.Users.Where(user => user.UserId.Contains(currentUserID))
.Select(s => s.GroupId).FirstOrDefault() == group.ID), "ID", "Name");
J'utilise ApplicationDbContext avec DbSets <> pour sélectionner des éléments de la base de données. Ce que je ne comprends pas, c'est que j'utilise exactement la même requête dans une autre partie du code pour obtenir tous les groupes dont l'utilisateur fait partie, mais pour une raison quelconque, cela ne fonctionne pas ici. Au lieu de cela, il sélectionne tous les groupes qui se trouvent dans la base de données, que vous soyez membre ou non.
Je vous remercie de toute aide possible :)
Il est possible que 'Contains()' renvoie plus d'un ID utilisateur, par ex. vous recherchez l'utilisateur "100" et renvoie "98100", "51009", etc. parce que l'ID de l'utilisateur est une chaîne. Alors, 'FirstOrDefault()' en obtient un. Envisagez d'utiliser Equals ou ==. – derloopkat
En fait, j'avais l'intuition que cela pourrait être le cas, mais malheureusement, il n'a rien changé :( Mais merci pour la suggestion!: D – DarkCatapulter