0

我有点困惑,需要一点帮助。我正在开发一个使用Entity Framework 4.1的ASP.Net MVC 3 Web应用程序。ASP.Net MVC 3全名在DropDownList

我有我的剃刀视图中的一个一个DropDownList,我希望显示全名的列表,例如

Tom Jones 
Michael Jackson 
James Brown 

在我的控制器我获取用户对象的列表,然后选择姓和每个用户的LastName,并将数据传递给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); 

在我的Razor视图我有以下

@Html.DropDownListFor(model => model.requesterID, Model.RequestersList, "Select", new { @class = "inpt_a"}) 
@Html.ValidationMessageFor(model => model.requesterID) 

然而,当我运行代码,我得到以下错误

至少一个对象必须实现IComparable。

我感觉好像我正在以这种错误的方式去做,所以有人可以帮助这个吗?

谢谢。

回答

4

在您的LINQ查询FullName应被宣布这样的,否则EF不知道怎么给你创建的匿名对象上订购:

FullName = r.firstName + " " + r.lastName 

例子:

var RequesterNames = 
    from r in Requesters 
    let person = new { UserID = r.userID, FullName = r.firstName + " " + r.lastName } 
    orderby person.FullName ascending 
    select person; 
+0

优秀。谢谢你的帮助。 – tgriffiths