2016-07-17 1 views
2

Я следующий запрос, но это бросание ошибки:Entity Framework Lambda Expression, чтобы получить конкретные столбцы

Cannot implicitly convert system.collections.generics.lists <> to system.collections.generics.ienumerable

Запрос:

public IEnumerable<ApplicationUser> GetUsersByRole(string roleName) 
{ 
    var role = _context.Roles.FirstOrDefault(r => r.Name == roleName); 

    return _context.Users 
      .Where(u => u.Roles.Any(r => r.RoleId == role.Id)) 
      .Select(u => new ApplicationUser { Id = u.Id, FullName = u.FullName }) 
      .ToList(); 
} 

В моем классе пользовательского приложения Я имею Fullname свойства определяются как следующим образом:

public class ApplicationUser : IdentityUser 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public string FullName 
    { 
     get { return string.Format("{0} {1}", FirstName, LastName); } 
    } 
} 

Я также получаю ошибку

property Indexer ApplicationUser.Fullname cannot be assigned to -- it is read only

Есть ли способ сохранить свойство fullname только для чтения без добавления сеттера?

+0

'.select (и => новый ApplicationUser {...}) ToList();' – haim770

ответ

0

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

.Select(u => new ApplicationUser { Id = u.Id, Name = u.UserName}).ToList(); 

Чтобы вернуть IEnumerable<ApplicationUser>

+0

теперь я получаю следующее сообщение об ошибке:. 'Свойство Имя индексатора ApplicationUser.Fullname не может быть присвоено - оно доступно только для чтения. См. Мое редактирование выше? – adam78