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