Почему Select возвращает boolean?

asp.net-mvc-5 c# entity-framework-6 linq

Вопрос

Я работаю с Entity Framework 6 в MVC 5.

У меня есть следующий метод:

[HttpPost]
public ActionResult UpdateDetails(ApplicationUser applicationUser)
{
    var context = new ApplicationDbContext();
    var user = context.Users.Select(x => x.UserName == applicationUser.UserName).FirstOrDefault();

//etc etc
}

Пользователи - это IDbSet<ApplicationUser> .

Почему я получаю bool от метода Select?

Мое ожидание - вернуть объект ApplicationUser . Почему это не так?

благодаря

Принятый ответ

Select() реализует элемент последовательности. Поскольку x.UserName == applicationUser.UserName возвращает bool , результат метода будет логическим.

Для чего нужен метод Where . Это фильтрует последовательность, основанную на указанном предикате:

var user = context.Users.Where(x => x.UserName == applicationUser.UserName).FirstOrDefault();

Который может быть сокращен до:

var user = context.Users.FirstOrDefault(x => x.UserName == applicationUser.UserName);

Это возможно, так как эта перегрузка FirstOrDefault() принимает предикат фильтра как второй параметр.


Популярные ответы

Select буквально выбирает что-то внутри аргументов. Итак, если у вас есть выражение, которое возвращает bool , Select вернет bool .



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему