Linq заменить поле для подзапроса - PullRequest
0 голосов
/ 29 января 2010

У меня есть база данных, содержащая пользователей и роли. Таблица Users содержит ссылку на роли таблицы, поскольку каждый пользователь привязан к роли (одна и только одна). Когда я использую linq для извлечения пользователей, поле «роль» отображается в сетке данных как целое число (которое является первичным ключом таблицы Roles). Однако я хотел бы заменить поле «Роль пользователя» на фактическое поле «Имя» таблицы «Роль». Есть идеи, как это сделать?

Код datacontext теперь является кодом по умолчанию, какой запрос linq я должен использовать, чтобы получить то, что мне нужно?

public IQueryable<Usuarios> GetUsuarios()
{
        return this.ObjectContext.Usuarios;
}

Ответы [ 2 ]

1 голос
/ 29 января 2010

Канонический способ сделать это состоит в том, чтобы иметь модель для конкретного вида для вашей таблицы данных и использовать LINQ для выбора этой модели для конкретного вида. Мой пример предполагает LINQ to SQL.

public IEnumerable<UserWithRoles> GetUsersWithRoles()
{
     return this.ObjectContext
                .Users
                .Select( u => new UserWithRole { Name = u.Name, ..., Role = u.Roles.First().Name } );
}
0 голосов
/ 29 января 2010

Сделайте это, чтобы рано связать роли с пользователями:

return this.ObjectContext.Usuarios.Include("Roles");
...