Convertir LINQ to SQL con JOIN a IQueryable seleccione
-
02-10-2019 - |
Pregunta
Tengo una función llamada GetUserByOpenId
no quiero estar usando esta función en absoluto
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
Lo que realmente quiero ser capaz de hacer es usar mi función "GetUsers" (IQueryable) y hacer la unión en mi capa de servicio.
Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers
Dim users = (From u In dc.Users
Select u)
Return users.AsQueryable
End Function
¿Alguien puede decirme lo que el método se vería como para devolver los datos más apropiada utilizando una función similar a este
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
Solución
Hmm parece que usted debe tener una relación entre FK OpenID y Usuarios, pero que no lo hacen. Si crea esta relación va a ser capaz de atravesar fácilmente a través de la propiedad y no tiene que hacer la consulta en absoluto (además de un simple caso).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow