2013-10-10 2 views
-1

Я хочу, чтобы выбрать данные определенного столбца всех записей с помощью Linq command.Here моего кодаВыберите данные одного столбца всех записей с помощью команды LinQ

[HttpGet] 
    public ActionResult DeleteRole(RoleManager model) 
    { 

     string [] getRole = (from r in Session.Query<RoleManager>() 
          select r.roleName).ToArray(); 

     foreach(var myrole in getRole) 
     { 
      model.roleName = myrole.roleName; 
     } 

     return View(model); 
    } 

но не working.Can вас пожалуйста, направляйте меня.

+1

Что такое 'RoleManager' в этом случае? И почему ваш метод 'DeleteRole' на самом деле ничего не удаляет? –

+1

В будущем, пожалуйста, дайте более подробную информацию, чем «она не работает», которая похожа на посещение врача и говорит: «Я не здоров» и ожидаю диагноза без дополнительной информации. –

+0

Егор? Это ты тут? – Anarion

ответ

0

Вы пытаетесь выбрать roleName дважды - вы уже поступили правильно, выбрав его в первый раз. Вы также перезаписываете поле/свойство roleName в модели несколько раз, тогда как предположительно вы хотите сохранить все значения. Пока не ясно, что model предназначается, чтобы делать вообще, если честно, - но вы должны быть в состоянии создать представление только роли:

[HttpGet] 
public ActionResult DeleteRole(RoleManager model) 
{ 
    string[] roles = (from r in Session.Query<RoleManager>() 
         select r.roleName).ToArray(); 
    return View(roles); 
} 

Или с помощью метода Select расширения напрямую, что проще этот случай IMO:

[HttpGet] 
public ActionResult DeleteRole(RoleManager model) 
{ 
    string[] roles = Session.Query<RoleManager>() 
          .Select(r => r.roleName) 
          .ToArray(); 
    return View(roles); 
} 

... или если вы сделать необходимости изменения модели, вы будете нуждаться в самой модели для поддержки несколько ролей.

Обратите внимание, что это на самом деле не делать какие-либо удаление, что делает его довольно странное имя действия, на мой взгляд ...

+0

Я просто собираю значения ролей в методе HttpGet, я удаляю его в методе HttpPost. Я пробовал ваш ответ 2, но он дает ошибку. Элемент модели, переданный в словарь, имеет тип «System.String []», но это словарь требует элемента модели типа «MvcMembership.Models.RoleManager» – Wasfa

+0

@Wasfa: Ну да, вам тоже нужно будет изменить представление, но в принципе вам нужно будет решить, что вы пытаетесь сделать. Если это не удаляет роль, вы не должны называть ее 'DeleteRole' IMO. Если вам нужна одна модель, эта модель должна содержать все, что вам нужно в представлении, что может означать, что в ней есть * коллекция * имен ролей. –

+0

@JonSkeet, если путь ..../deleterole отображает роли, которые потенциально могут быть удалены при последующем POST, что не так с этим? Кажется логичным для меня. – happygilmore

Смежные вопросы