Я хочу создать строго типизированный список ролей в моем контроллере вместе с двумя другими списками, которые будут использоваться в моем представлении в качестве различных фильтров для отправки электронной почты. Я знаю, что я могу создать список ролей, используя следующее:Каков правильный способ использования Linq для ссылки на таблицу, которую вы создаете, с помощью ViewModel в качестве списка для создания списка «SelectListItems»?
var viewModel = new ListViewModel
{
Roles = db.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Id.ToString(), Text = rr.Name }).ToList(),
};
Однако, как я и хотел передать два других списки на мой контроллер, я бы предпочел, чтобы достигнуть список ролей, написав запрос в следующим образом:
var viewModel = db.Roles
.Select(x => new SendGroupEmailViewModel
{
Roles = x.Select(rr => new SelectListItem { Value = rr.Id.ToString(), Text = rr.Name }).ToList(),
};
Таким образом, я могу затем достичь своих двух других списков в рамках одного и того же запроса, в отличие от предыдущего способа, где они должны быть эффективно отдельные запросы к БД. Очевидно, что то, что выше, не работает, я не могу. Выберите в таблице ролей, написав Roles = x.Select.
Мой вопрос: почему я не могу это сделать и как правильно обращаться к таблице ролей при написании ее аналогично вышеизложенному?
Просто, чтобы быть ясным, причина, по которой он должен быть var viewModel = db.Roles, потому что по какой-либо причине я не могу получить доступ к списку ролей идентификаторов/имен, иначе из-за того, как Identity устанавливается в MVC. Я знаю, что есть другие способы достижения этого списка, я просто хотел бы знать, как это можно сделать таким образом?
редактировать - Я хотел бы добавить, что роли в моем ViewModel выглядит следующим образом:
public IEnumerable<SelectListItem> Roles { get; set; }
вам нужно использовать (в viewbag или ViewModel) SelectList sList = новый SelectList (selectList, «Текст», «Значение», выбранный); – Emil
Спасибо за ваш ответ, но я не уверен, как это отвечает на мой вопрос или помогает мне вообще, не могли бы вы объяснить, что вы имеете в виду? Как это вписывается в конкретный стиль запроса, который я написал во втором примере, и как он помогает мне ссылаться на таблицу ролей в том виде, в котором я нуждаюсь в этом запросе? – Rob