Конвертировать LINQ в SQL с присоединением к iQueryable Select
-
02-10-2019 - |
Вопрос
У меня есть функция называется GetUserByOpenId
Я не хочу использовать эту функцию вообще
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
То, что я действительно хочу иметь возможность сделать, это использовать функцию «GetUsers» (iQueryable) и выполните соединение в моем сервисном слое.
Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers
Dim users = (From u In dc.Users
Select u)
Return users.AsQueryable
End Function
Кто-нибудь может сказать мне, что будет выглядеть метод, чтобы вернуть данные о апентритах, используя аналогичную функцию для этого
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
Решение
Хм, похоже, вы должны иметь отношения FK между OpenIDS и пользователями, но вы не. Если вы создаете эти отношения, вы сможете легко пройти его через свойство и не приходится делать запросы вообще (помимо простого, где).
Не связан с StackOverflow