I'm working with Entity Framework 6 in MVC 5.
I have the following method:
[HttpPost]
public ActionResult UpdateDetails(ApplicationUser applicationUser)
{
var context = new ApplicationDbContext();
var user = context.Users.Select(x => x.UserName == applicationUser.UserName).FirstOrDefault();
//etc etc
}
Users is an IDbSet<ApplicationUser>.
Why am I getting a bool back from the Select method?
My expectation would be to get an ApplicationUser object back. Why isn't this the case?
Thanks
Select() projects an element of a sequence. Since x.UserName == applicationUser.UserName returns a bool, the result of the method will be a boolean.
What you want requires the Where method. This filters the sequence based on the specified predicate:
var user = context.Users.Where(x => x.UserName == applicationUser.UserName).FirstOrDefault();
Which can be shortened to:
var user = context.Users.FirstOrDefault(x => x.UserName == applicationUser.UserName);
This is possible, since this overload of FirstOrDefault() takes a filter predicate as second parameter.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With