C# DropDownList中的ASP.NETMVC3全名

C# DropDownList中的ASP.NETMVC3全名,c#,asp.net-mvc-3,linq-to-entities,selectlist,html.dropdownlistfor,C#,Asp.net Mvc 3,Linq To Entities,Selectlist,Html.dropdownlistfor,我对此感到有点困惑,需要一些帮助。我正在使用EntityFramework4.1开发一个ASP.NETMVC3Web应用程序 例如,我的一个Razor视图上有一个下拉列表,我希望显示一个全名列表 Tom Jones Michael Jackson James Brown 在控制器中,我检索用户对象列表,然后选择每个用户的名字和姓氏,并将数据传递给SelectList List<User> Requesters = _userService.GetAllUsersByTypeID

我对此感到有点困惑,需要一些帮助。我正在使用EntityFramework4.1开发一个ASP.NETMVC3Web应用程序

例如,我的一个Razor视图上有一个下拉列表,我希望显示一个全名列表

Tom Jones 
Michael Jackson 
James Brown
在控制器中,我检索用户对象列表,然后选择每个用户的名字和姓氏,并将数据传递给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);
但是,当我运行代码时,我得到以下错误

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

我觉得我好像走错了路,有人能帮我吗


谢谢。

在您的LINQ查询中
全名应该这样声明,否则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;

在LINQ查询中,应该这样声明全名,否则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;

杰出的谢谢你的帮助,太好了。谢谢你的帮助。