I am getting a bit confused with this and need a little help please. I am developing a ASP.Net MVC 3 Web application using Entity Framework 4.1.
I have a DropDownList on one of my Razor Views, and I wish to display a list of Full Names, for example
Tom Jones
Michael Jackson
James Brown
In my Controller I retrieve a List of User Objects, then select the FirstName and LastName of each User, and pass the data to a SelectList.
List<User> Requesters = _userService.GetAllUsersByTypeIDOrgID(46, user.organisationID.Value).ToList();
var RequesterNames = from r in Requesters
let person = new { UserID = r.userID, FullName = new { r.firstName, r.lastName } }
orderby person.FullName ascending
select person;
viewModel.RequestersList = new SelectList(RequesterNames, "UserID", "FullName");
return View(viewModel);
In my Razor View I have the following
@Html.DropDownListFor(model => model.requesterID, Model.RequestersList, "Select", new { @class = "inpt_a"})
@Html.ValidationMessageFor(model => model.requesterID)
However, when I run the code I get the following error
At least one object must implement IComparable.
I feel as if I am going about this the wrong way, so could someone please help with this?
Thanks.
In your LINQ query
FullNameshould be declared like this, otherwise EF doesn’t know how to order on the anonymous object you created:Example: