Конвертировать LINQ в SQL с присоединением к iQueryable Select

StackOverflow https://stackoverflow.com/questions/3175644

Вопрос

У меня есть функция называется 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 и пользователями, но вы не. Если вы создаете эти отношения, вы сможете легко пройти его через свойство и не приходится делать запросы вообще (помимо простого, где).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top