Why does Select return a boolean?

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

Question

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

1
2
2/19/2014 9:28:49 PM

Accepted Answer

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.

7
2/19/2014 9:27:07 PM

Popular Answer

Select literally selects something inside the arguments. So, if you have an expression that returns a bool, Select will return bool.



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow