J'ai trois tables plusieurs relations entre plusieurs j'ai rejoint la table trois et sélectionnez la valeur que je veux mais maintenant je dois sélectionner une ligne à partir du résultat de la requête par où en spécifiant l'id ceci est ma table trois
Et voici la requête utilisant l'expression LINQ
lambda:
DataBaseContext db = new DataBaseContext();
public ActionResult Index()
{
var UserInRole = db.UserProfiles.
Join(db.UsersInRoles, u => u.UserId, uir => uir.UserId,
(u, uir) => new { u, uir }).
Join(db.Roles, r => r.uir.RoleId, ro => ro.RoleId, (r, ro) => new { r, ro })
.Select(m => new AddUserToRole
{
UserName = m.r.u.UserName,
RoleName = m.ro.RoleName
});
return View(UserInRole.ToList());
}
le résultat sera comme ça en utilisant sql
requête
sql
requête
select *
from UserProfile u join webpages_UsersInRoles uir on u.UserId = uir.UserId
join webpages_Roles r on uir.RoleId = r.RoleId
résultat de la requête sql
maintenant, j'utilise anther sql
requête pour filtrer le résultat des aperçus sql
requête par où et définir la condition à where u.UserId = 1
pour ne me rendre que l'utilisateur avec l'identifiant 1 comme ça
select *
from UserProfile u join webpages_UsersInRoles uir on u.UserId = uir.UserId
join webpages_Roles r on uir.RoleId = r.RoleId
where u.UserId = 1
et le résultat de cette requête sql
alors, comment puis-je ajouter le où clause
à mon expression lambda pour obtenir le même résultat que le résultat de la requête sql
et merci pour toute aide?
Si je comprends bien vos questions, il vous suffit d'ajouter le .Where (m => m.r.u.UserId == 1):
var UserInRole = db.UserProfiles.
Join(db.UsersInRoles, u => u.UserId, uir => uir.UserId,
(u, uir) => new { u, uir }).
Join(db.Roles, r => r.uir.RoleId, ro => ro.RoleId, (r, ro) => new { r, ro })
.Where(m => m.r.u.UserId == 1)
.Select (m => new AddUserToRole
{
UserName = m.r.u.UserName,
RoleName = m.ro.RoleName
});
J'espère que ça t'as aidé.
Je cherchais quelque chose et j'ai trouvé ce post. Je poste ce code qui gère des relations plusieurs à plusieurs au cas où quelqu'un en aurait besoin.
var UserInRole = db.UsersInRoles.Include(u => u.UserProfile).Include(u => u.Roles)
.Select (m => new
{
UserName = u.UserProfile.UserName,
RoleName = u.Roles.RoleName
});