Convertir sql avec Linq JOIN pour sélectionner IQueryable
-
02-10-2019 - |
Question
J'ai une fonction appelée GetUserByOpenId
Je ne veux pas être utiliser cette fonction tout
Public Function GetUserByOpenID(ByVal claimedidentifier As String) As User Implements IUserRepository.GetUserByOpenID
Dim user = (From u In dc.Users
Join o In dc.OpenIDs On u.ID Equals o.UserID
Where o.ClaimedIdentifier = claimedidentifier
Select u).FirstOrDefault
Return user
End Function
Ce que je veux vraiment être en mesure de faire est d'utiliser ma fonction « GetUsers » (IQueryable) et faire la JOIN dans ma couche de service.
Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers
Dim users = (From u In dc.Users
Select u)
Return users.AsQueryable
End Function
Quelqu'un peut-il me dire ce que la méthode ressemblerait à renvoyer les données appropraite en utilisant une fonction similaire
Public Function GetAllUsers() As System.Collections.Generic.IList(Of User) Implements IUserService.GetAllUsers
Return _UserRepository.GetUsers().Where(Function(u) (Not u.isClosed)).ToList
End Function
La solution
Hmm, il semble que vous devriez avoir une relation entre FK OpenIDs et les utilisateurs, mais vous n'avez pas. Si vous créez cette relation que vous serez en mesure de traverser facilement par la propriété et ne pas avoir à faire interroger du tout (en plus d'un simple où).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow